ARM寄存器简介

[10-10 20:46:00]   来源:http://www.88dzw.com  其它硬件   阅读:8237

文章摘要:其中<mode>是usr、svc、abt、und、irq和fiq的一种。R13通常用做堆栈指针。每一种模式都拥有自己的物理R13。程序初始化R13,使其指向该模式专用的栈地址。当进入该模式时,可以将需要使用的寄存器保存在R13所指的栈中,当退出该模式时,将保存在R13所指的栈中的寄存器值弹出。这样就实现了程序的现场保护。寄存器R14又被称为连接寄存器(LR),在ARM中有下面两种特殊用途。① 每一种处理器模式在自己的物理R14中存放当前子程序的返回地址。当通过BL或者BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,就实现

ARM寄存器简介,标签:其它硬件维修,http://www.88dzw.com

其中<mode>是usr、svc、abt、und、irq和fiq的一种。

R13通常用做堆栈指针。每一种模式都拥有自己的物理R13。程序初始化R13,使其指向该模式专用的栈地址。当进入该模式时,可以将需要使用的寄存器保存在R13所指的栈中,当退出该模式时,将保存在R13所指的栈中的寄存器值弹出。这样就实现了程序的现场保护。

寄存器R14又被称为连接寄存器(LR),在ARM中有下面两种特殊用途。

① 每一种处理器模式在自己的物理R14中存放当前子程序的返回地址。当通过BL或者BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,就实现了子程序返回。

可以通过下面两种方式实现这种子程序的返回操作。

◆执行下面任何一条指令

MOV      pc, LR

BX          LR

◆在子程序入口使用下面指令将PC保存到栈中:

STMFD  SP!, {registers}, LR}

相应地,下面的指令可以实现子程序的返回:

LDMFD  SP!, { registers}, LR }

② 当发生异常中断的时候,该模式下的特定物理R14被设置成该异常模式将要返回的地址。对于某些异常,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与上面的子程序返回方式基本相同。

3)程序计数器PC→R15

程序计数器R15又被记作PC。它虽然可以作为一般的通用寄存器使用,但是有一些指令在使用R15时有一些特殊限制。当违反了这些限制时,该指令执行的结果将是不可预料的。

由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第1位总为0。
需要注意的是,当使用指令STR/STM保存R15时,保存的可能是当前指令地址值加8字节,也可能保存的是当前指令地址加12字节。到底是哪种方式,取决于芯片具体设计方式。无论如何,在同一芯片中,要么采用当前指令地址加8,要么采用当前指令地址加12,不能有些指令采用当前指令地址加8,另一些指令采用当前指令地址加12。因此对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当不可避免这种使用方式时,可以先通过一些代码来确定所用的芯片使用的是哪种实现方式。

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


Tag:其它硬件其它硬件维修电脑技术 - 硬件维修 - 其它硬件

《ARM寄存器简介》相关文章