- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.5.1.1 通用寄存器 (3)程序计数器PC(R15) ARM处理器采用多级流水线技术 寄存器R15用作程序计数器(PC)。 在ARM状态下,指令总是字对齐的,位[1:0]为0,位[31:2]用于保存指令地址PC; 在Thumb状态下,指令是半字对齐的,位[0]为0,位[15:1]用于保存指令地址PC; 3.5.1.1 通用寄存器 (3)程序计数器PC(R15) 虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。 R15值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现一些不可预料的结果。所以,一般不这么使用。 由于ARM采用多级流水线技术, PC总是指向正在取指的指令,而不是正在执行的指令,因此保存在R15的程序地址并不是当前执行指令的地址 。对于3级流水线,PC总是指向下两条指令的地址,也即PC总是指向当前指令的下两条指令的地址。因此,对于ARM指令集而言,PC的值为当前指令的地址值加8个字节。(那么对3级流水线的THUMB指令集而言呢?) 3.5.1.2 状态寄存器 ARM体系结构包含一个当前程序状态寄存器(CPSR, Current Program Status Register)和5个备份的程序状态寄存器(SPSRs, Saved Program Status Register )。 备份的程序状态寄存器用来进行异常处理,其功能包括: ─ 保存ALU中的当前操作信息 ─ 控制允许和禁止中断 ─ 设置处理器的运行模式 程序状态寄存器 CPSR 用来保存当前程序状态的寄存器。 所有处理器模式下都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。 程序状态保存寄存器SPSR_mode 当异常发生时, SPSR_mode用来保存CPSR的当前值,从异常返回时,由 SPSR_mode恢复CPSR (恢复异常发生时的工作状态) 。 由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。 一共有多少个SPSR?为什么? f—条件码标志位(保存ALU中的当前操作信息) N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。 在ARM状态下,绝大多数的指令都是有条件执行的。 在Thumb状态下,仅有分支指令是有条件执行的。 27 31 N Z C V Q 28 6 7 I F T mode 16 23 8 15 5 4 0 24 f s x c U n d e f i n e d J 标志位 含 义 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表示符号位溢出。 --对于其他非加/减指令,C的值通常不改变。 Q 在ARM v5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。 在其他版本的处理器中,Q位无定义。 C—控制位,位[0:7]为控制位 中断禁止位I、F——控制允许和禁止中断,I和F为中断/快中断禁止位 I=1 禁止IRQ中断 I=0 允许IRQ中断 F=1 禁止FIQ中断 F=0 允许FIQ中断 C—控制位,位[0:7]为控制位 T控制位——反映处理器的运行状态,T为处理器工作状态选择位 T=1时,程序运行于Thumb状态 T=0时,程序运行于ARM状态 M控制位——决定了处理器的运行模式,M0、M1、M2、M3和M4为处理器模式选择位 当发生异常时这些位被改变。 如果处理器运行在特权模式,这些位也可以由程序修改。 工作模式位M[4:0]定义 保留位,其它位[8:27]留做以后ARM版本的扩展。 CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。 3.5.2 Thumb状态下的寄存器组织 3.5.2 Thumb状态下的寄存器组织 Thu
文档评论(0)