完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
来源 网络 37个寄存器 6个分组物理寄存器R13~R14 寄存器R13~R14可分为6个分组的物理寄存器。1个用于用户模式和系统模式,而其他5个分别用于svc、abt、und、irq和fiq五种异常模式。访问时需要指定它们的模式,如:R13_,R14_;其中:可以从usr、svc、abt、und、irq和fiq六种模式中选取一个 寄存器R13 寄存器R13通常用作堆栈指针,称作SP。每种异常模式都有自己的分组R13。通常R13应当被初始化成指向异常模式分配的堆栈。在入口处,异常处理程序将用到的其他寄存器的值保存到堆栈中;返回时,重新将这些值加载到寄存器。这种异常处理方法保证了异常出现后不会导致执行程序的状态不可靠。 寄存器R14 寄存器R14用作子程序链接寄存器,也称为链接寄存器LK (Link Register)。当执行带链接分支(BL)指令时,得到R15的备份。 在其他情况下,将R14当做通用寄存器。类似地,当中断或异常出现时,或当中断或异常程序执行BL指令时,相应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。 FIQ模式有7个分组的寄存器R8~R14,映射为R8_fiq~R14_fiq。在ARM状态下,许多FIQ处理没必要保存任何寄存器。User、IRQ、Supervisor、Abort和Undefined模式每一种都包含两个分组的寄存器R13和R14的映射,允许每种模式都有自己的堆栈和链接寄存器。 程序计数器R15 寄存器R15用作程序计数器(PC)。在ARM状态,位[1:0]为0,位[31:2]保存PC。在Thumb状态,位[0]为0,位[31:1]保存PC。R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。 读程序计数器。指令读出的R15的值是指令地址加上8字节。由于ARM指令始终是字对齐的,所以读出结果值的位[1:0]总是0(在Thumb状态下,情况有所变化)。读PC主要用于快速地对临近的指令和数据进行位置无关寻址,包括程序中的位置无关转移。 写程序计数器。写R15的通常结果是将写到R15中的值作为指令地址,并以此地址发生转移。由于ARM指令要求字对齐,通常希望写到R15中值的位[1:0]=0b00。 由于ARM体系结构采用了多级流水线威廉希尔官方网站 ,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。 程序状态寄存器 寄存器R16用作程序状态寄存器CPSR(Current Program Status Register,当前程序状态寄存器)。在所有处理器模式下都可以访问CPSR。 CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR(Saved Program Status Register)。当异常出现SPSR用于保留CPSR的状态。 条件码标志 N、Z、C、V(Negative、Zero、Carry、oVerflow)均为条件码标志位(Condition Code Flags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。 在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST)、一些算术运算、逻辑运算和传送指令进行修改。 条件码标志的通常含义如下: N: 如果结果是带符号二进制补码,那么,若结果为负数,则N=1;若结果为正数或0,则N=0。 Z: 若指令的结果为0,则置1(通常表示比较的结果为“相等”),否则置0。 C: 可用如下4种方法之一设置: 加法(包括比较指令CMN)。若加法产生进位(即无符号溢出),则C置1,否则置0。 减法(包括比较指令CMP)。若减法产生借位(即无符号溢出),则C置0,否则置1。 对于结合移位操作的非加法/减法指令,C置为移出值的最后1位。 对于其他非加法/减法指令,C通常不改变。 V: 可用如下两种方法设置,即 对于加法或减法指令,当发生带符号溢出时,V置1,认为操作数和结果是补码形式的带符号整数。 对于非加法/减法指令,V通常不改变。 控制位 程序状态寄存器PSR(ProgramStatus Register)的最低8位I、F、T和M[4:0]用作控制位。当异常出现时改变控制位。处理器在特权模式下时也可由软件改变。 a. 中断禁止位 I:置1,则禁止IRQ中断 F:置1,则禁止FIQ中断 b. T位 T=0 指示ARM执行 T=1 指示Thumb执行 c. 模式控制位 M4、M3、M2、Ml和M0(M[4:0])是模式位,决定处理器的工作模式,如表所列。M[4:0]工作模式可访问的寄存器。 10000用户模式PC,CPSR,R14~R0 10001FIQ模式PC,R7~R0,CPSR, SPSR_fiq,R14_fiq~R8_fiq 10010IRQ模式PC,R12~R0,CPSR, SPSR_irq,R14_irq,R13_irq 10011管理模式PC,R12~R0, CPSR, SPSR_svc,R14_svc,R13_svc 10111中止模式PC,R12~R0, CPSR, SPSR_abt,R14_abt,R13_abt 11011未定义模式PC,R12~R0, CPSR, SPSR_und,R14_und,R13_und 11111系统模式PC,R14~R0,CPSR(ARM v4及以上版本) 并非所有的模式位组合都能定义一种有效的处理器模式。其他组合的结果不可预知。 其他位 程序状态寄存器的其他位保留,用做以后的扩展。
|
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2246个成员聚集在这个小组
加入小组灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
11564 浏览 3 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
5904 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
10857 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4558 浏览 1 评论
灵动微课堂(第106讲) | MM32 USB功能学习笔记 —— WinUSB设备
4283 浏览 1 评论
[MM32软件] MM32F002使用内部flash存储数据怎么操作?
947浏览 1评论
772浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-11 18:48 , Processed in 0.627052 second(s), Total 53, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号