ARM寄存器详解 |
您所在的位置:网站首页 › arm处理器的作用有哪些 › ARM寄存器详解 |
ARM寄存器 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个状态寄存器都是可访问的。 ARM状态下的通用寄存器与程序计数器 ARM状态下的程序寄存器 通用寄存器 R0~R15 R13_svc、R14_svc R13_abt、R14_abt R13_und、R14_und R13_irq、R14_irq R8_fiq~R14_fiq通用寄存器 1、不分组寄存器(R0-R7) 2、分组寄存器(R8-R14) 程序计数器R15(PC) 不分组通用寄存器 R0-R7是不分组寄存器。这意味着在所有处理器模式下,访问的都是同一个物理寄存器。不分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未分组寄存器。 分组寄存器R8-R12 1、FIQ模式分组寄存器R8-R12 2、FIQ以外的分组寄存器R8-R12 分组寄存器R13、R14 1、寄存器R13通常做堆栈指针SP 2、寄存器R14用作子程序链接寄存器(Link Register-LR),也称为LR,指向函数的返回地址。 程序计数器 寄存器R15被用作程序计数器,也称为PC。其值等于当前正在执行的指令的地址+8(因为在取地址和执行之间多了一个译码的阶段)。 状态寄存器 CPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq ARM所有工作模式下都可以访问程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。 CPSR在每个异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的值,以便异常返回后恢复异常发生时的工作状态。 寻址方式:所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式。 1、立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即数寻址。例如以下指令: ADD R0,R0,#0x3f;在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀。 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式。 ADD R0,R1,R2;该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 寄存器间接寻址 寄存器间接寻址就是寄存器中的存放的是操作数在内存中的地址。例如以下指令: LDR R0,[R2];在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中。第二条指令将以R1的值为地址的存储器中的数据传送到R0中。 基址变址寻址 基址变址寻址就是将寄存器里的内容(基地址)与指令中给出的地址偏移量相加,从而得到操作数在内存中的地址: LDR R0,[R1,#4];5、相对寻址 与基址变址寻址方式相类似,相对寻址PC指针的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序NEXT处执行 ……… NEXT ………. MOV PC ,LR ; 从子程序返回 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |