参考《ARM应用系统开发详解》
ARM体系结构的寄存器R0~R15主要有三类:
@未分组寄存器R0~R7
@分组寄存器R8~R14
@PC寄存器R15
未分组寄存器
同一个寄存器名在ARM微处理器内部只有一个独立的物理寄存器与之对应。
分组寄存器
每一个物理寄存器分别与不同的处理器模式相对应。对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。对于于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。
寄存器R13
在ARM指令中常用作堆栈指针,但这只是一种习惯用法
R14
也称作子程序链接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15的备份。
R14寄存器使用举例:当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。
子程序返回指令:MOV PC, LR 或者 BX LR
将R14存入堆栈:STMFD SP!,{ 子程序返回时的R14出栈:LDMFD SP!,{ 程序计数器PC(R15) PC在ARM模式下,位[1:0]为0,位[31:2]用于保存PC;在Thumb 状态下,位[0]为0,位[31:1]用于保存PC。(符合ARM微处理器字对齐规则:32位活16位指令长度,而存储是以字节为单位的)。对于ARM指令集而言,PC总是指向当前指令的下两条指令。即PC的值为当前指令的地址值加8个字节。 寄存器R16 寄存器R16用作当前程序状态寄存器CPSR 条件码标志(Condition Code Flags) N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,大多数的指令都是有条件执行的。 N 当用两个补码表示的带符号数进行运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零; Z Z=1 表示运算的结果为零;Z=0 表示运算的结果为非零; C 可以有 4 种方法设置 C 的值: ─ 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。 ─ 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。 ─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 ─ 对于其他的非加/减运算指令,C的值通常不改变。 V 可以有2种方法设置V的值: ─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。 ─ 对于其他的非加/减运算指令,V的值通常不改变 控制位 PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位可以由程序修改。 ─ 中断禁止位I、F: I=1 禁止IRQ中断; F=1 禁止FIQ中断。 ─ T标志位:该位反映处理器的运行状态。对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令为引起定义的指令异常,当该位为0时表示运行于ARM状态。 ─ 运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。 保留位 SPSR 每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。 由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。
上一篇:uboot-2011.12移植到S3C2440(三)——硬件初始化:看门狗、中断、时钟
下一篇:ARM微处理器的指令集概述(一)——ARM应用系统开发详解笔记
推荐阅读最新更新时间:2024-11-09 12:15
推荐帖子
- 在estore上订购TMDX5535EZDSP要等12月15日才能发货?
- TMDX5535EZDSP我在estore上订购成功了,但是过了半个月都没有反应啊orderstate还是processing在网站上的客户留言页面询问了两次也没有结果一般这是什么情况啊留意到Est.ShipDate是12/15/2011,不会真要等到2个月之后才能发货吧?坑爹啊。。。OrderDate:10/14/20119:13PMOrderTotal:$55.00Balance:$55.00Stat
- icyrain DSP 与 ARM 处理器
- Multisim12电压转电流的实现
- 最近初步学习了Multisim这个软件,下面给大家简单讲讲使用Multisim实现输入0~5V电压转换成4~20mA电流的简单操作。因为要求实现的区间内的不定值,所以需要制作一个同比例放大器。当输入0V时,没有电流输出,所以需要添加一条辅助电路实现我们的目标。列出两个二元一次方程:①0.02x-y=5,②0.004x-y=0,解得x=312.5,即同比例放大倍数为312.5倍,又因为0.004乘以312.5等于1.2
- 电鱼电子工程师 模拟电子
- 基于CAN总线的汽车内部网络系统研究
- 本文研究汽车局域网CAN总线在汽车中的具体应用,实现采用Motorola公司16位单片机MC9S12DP256为核心的CAN节点设计。根据汽车内部CAN网络速率的不同,给出不同速率网络之间实现通信的网关软硬件设计。该系统具有结构简单、可靠性高等特点,具有广阔的应用前景。0、引言随着车用电气设备越来越多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车电气系统形成一个复杂的大系统,而且这一系统
- frozenviolet 汽车电子
- 西门子超声波物位计提供PROFIBUS通讯
- PROFIBUS作为一种标准的现场总线通讯方式,被越来越多的客户和供应商接受和采用。现在西门子高精度的一体化超声波物位计SITRANSProbeLU也以可提供PROFIBUSPA通讯了。同时,它也可提供HART通讯方式。用户可以通过手操器和SIMATICPDM软件对仪表进行调试。西门子的雷达、超声波物位计和射频导纳物位点式物位计均可选配PROFIBUSPA通讯。SITRANSProbeLU超声波物位计是西门子去年推出产品,做为超声波一体化测量的范本,
- superwomen 工控电子
- 【Sensor Tag】找些蓝牙4.0的资料,拿上来分享一下
- 收到SensorTag模块的时候,觉得很好,终于有东西玩了。但是在看了一些说明和资料后,倍感伤心,这款SensorTag为单模,不向下兼容,手机只支持蓝牙4.0的极少数款型,让我这样还用NOKIA非智能机的屌丝情何以堪。然后就是调试工具还得自备,这很不合理啊!!!但是这仍然阻挡不住屌丝学习蓝牙4.0的脚步。虽然还不知道该从哪开始下手,但是找了些资料,拿上来分享一下。【SensorTag】找些蓝牙4.0的资料,拿上来分享一下收集的挺多的,谢谢分享!
- HHX 模拟与混合信号
- 抄的运放电路,有个元件的功能看不懂
- 这两个个二极管有什么作用,能不要嘛抄的运放电路,有个元件的功能看不懂看不出光耦光电管侧电流通路。无论如何,光耦也不可能在负载电阻超过1兆欧情况下工作。R24、R25和R30、R31都是两个相同的电阻串联,也看不出有什么用处。怀疑电路抄错。 图画的不标准,这是日本人的电路,光耦负载电阻是4.7k,那个0.95v相当于地了,不知道为什么日本人把电路的地提升到了0.95v 光耦两侧共用同一个电源,我也不知道这有什么用处。和R24、R25和R30、R31都是两个相同的
- 王恒昌 模拟电子