ARM寄存器总结:
2013-11-07 16:27
169 查看
ARM有16个32位的寄存器(r0到r15)。
r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。
ARM有一个当前程序状态寄存器:CPSR。
一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq
ARM的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。
1、 ARM处理器共有37个寄存器,其中包括:
i. 31个通用寄存器,包括程序计数器(PC)在内。都是32位寄存器
ii. 6个状态寄存器,都是32位寄存器,但目前只使用了其中12位
2、 ARM处理器有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。
3、 通用寄存器可以分为3类:未备份寄存器(R0~R7)、备份寄存器(R8~R14)和程序计数器PC(R15)。对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。对应备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器,这使得中断处理非常简单。例如,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而使中断处理过程非常迅速。对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的,另外的5个对应于其他5种处理器模式。
4、 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。
5、 寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种殊的作用:
i. 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。
ii. 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与子程序返回方式基本相同。
http://blog.csdn.net/huangxb_csu/article/details/5976561
r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。
ARM有一个当前程序状态寄存器:CPSR。
一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq
ARM的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。
1、 ARM处理器共有37个寄存器,其中包括:
i. 31个通用寄存器,包括程序计数器(PC)在内。都是32位寄存器
ii. 6个状态寄存器,都是32位寄存器,但目前只使用了其中12位
2、 ARM处理器有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。
3、 通用寄存器可以分为3类:未备份寄存器(R0~R7)、备份寄存器(R8~R14)和程序计数器PC(R15)。对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。对应备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器,这使得中断处理非常简单。例如,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而使中断处理过程非常迅速。对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的,另外的5个对应于其他5种处理器模式。
4、 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。
5、 寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种殊的作用:
i. 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。
ii. 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与子程序返回方式基本相同。
http://blog.csdn.net/huangxb_csu/article/details/5976561
相关文章推荐
- ARM寄存器总结:
- ARM学习总结1->寄存器初始值问题
- 多寄存器寻址指令ldmia/ldmib和ARM存储器访问指令——多寄存器存取
- 嵌入式-ARM寄存器基本概念
- xilinx-arm-linux交叉编译链 安装总结
- S5PV210系列(裸机二) ARM的编程模式、7种模式和37个寄存器
- ARM GCC浮点相关总结
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- ARM特殊寄存器定义详解——#define A (* (volatile unsigned long *) 0x48000000(zz)
- 32位ARM寄存器是如何只传递8位、16位数据的——由uboot nand 操作想到的
- arm内部寄存器读写函数
- arm 寄存器 函数 参数
- ARM STM32F103VCT6 总结
- ARM期末复习总结
- ARM架构显示寄存器的详细信息
- 嵌入式arm学习总结(六)--S3C2440体系架构学习总结
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- ARM Remap 总结(小寿转载)
- ARM寄存器与汇编指令详解
- 影响CPSR状态寄存器的ARM汇编指令--总结