《嵌入式操作系统》第3章 ARM微处理器体系结构与指令集-教学课件(非AI生成).pptx
第3章ARM微处理器体系结构
与指令集;主要内容;3.1ARM体系结构的特点;ARM微处理器的特点;3.2ARM处理器体系结构;嵌入式处理器的基本结构(1);嵌入式处理器的基本结构(2);嵌入式处理器的基本结构(2);嵌入式处理器的基本结构(2);3.2.1ARM处理器的工作状态;ARM微处理器:处理器工作状态;3.2.2寄存器组织;ARM微处理器:ARMState寄存器;1.ARM状态下的通用寄存器;未分组寄存器R0~R7;分组寄存器R8~R14;程序计数器PC(R15);3.ARM状态下的状态寄存器R16;CPSR;ARM微处理器:程序状态寄存器;ARM微处理器:程序状态寄存器;Thumb状态下的寄存器组织;两种状态下的寄存器组织的关系;;3.2.3ARM的工作模式;ARM微处理器:CPU模式;3.2.4流水线;1流水线的概念与原理;(4)将操作数进行组合以得到结果或存储器地址(ALU);
(5)如果需要,则访问存储器以存储数据(mem);
(6)将结果写回到寄存器堆(res)。;2流水线的分类;在ARM9TDMI中使用了典型的5级流水线,5级流水线包括下面的流水线级。
(1)取指令(fetch):从存储器中取出指令,并将其放入指令流水线。
(3)译码(decode):指令被译码,从寄存器堆中读取寄存器操作数。在寄存器堆中有3个操作数读端口,因此,大多数ARM指令能在1个周期内读取其操作数。;(3)执行(execute):将其中1个操作数移位,并在ALU中产生结果。如果指令是Load或Store指令,则在ALU中计算存储器的地址。
(4)缓冲/数据(buffer/data):如果需要则访问数据存储器,否则ALU只是简单地缓冲1个时钟周期。
(5)回写(write-back):将指令的结果回写到寄存器堆,包括任何从寄存器读出的数据。;在ARM10中,将流水线的级数增加到6级,使系统的平均处理能力达到了1.3DMIPS/MHz。;图3-46级流水线指令的执行过程;3.2.5异常;1ARM体系结构所支持的异常类型;2异常优先级;3应用程序中的异常处理;异常向量;4对异常的响应;ARM微处理器:异常;5异常返回;6异常进入/退出时的指令;;第三章ARM体系结构与指令集;主要内容;ARM处理器的寻址方式;立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令??就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:
SUBS R0,R0,#1;R0减1,结果放入R0,并且影响标志位
MOV R0,#0xFF000;将立即数0xFF000装入R0寄存器
书写立即数时,要求以“#”为前缀。
十六进制数,#后加0x或,如#0x3f,#3f.
二进制数,#后加0b,如#0b1011
十进制数,#后加0d或缺省,如#0d678,#789
;有效立即数问题;操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。
寄存器寻址指令举例如下:
MOVR1,R2 ;将R2的值存入R1
SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R0;寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:
MOV R0,R2,LSL#3;R2的值左移3位,结果放入R0, ;即是R0=R2×8
ANDS R1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R1;第二操作数移位方式
LSL:逻辑左移,空出的最低有效位用0填充。
LSR:逻辑右移,空出的最高有效位用0填充。
;
ASL:算术左移,由于左移空出的有效位用0填充,因此它与LSL同义。
ASR:算术右移(ArithmeticShiftRight)。算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。
300
;ROR:循环右移(R