- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京大学出版社出版 嵌入式ARM系统原理与实例开发 北京大学出版社 出版 ARM处理器模式 除用户模式之外的其余6种称为非用户模式 (特权模式) 在特权模式中,除系统模式之外的其余5种又称为异常模式 不同的工作模式间可以相互切换。 ARM处理器的寄存器 为什么需要R13,R14,SPSR? 寄存器设计原则 对于一个正在运行的程序,主要包括以下内容: 当前程序的位置:PC寄存器存储。 当前CPU的状态:CPSR寄存器存储。 当前临时数据:R0~R12通用寄存器存储(特殊情况下,部分也有特殊用途)。 在运行时,涉及到中断切换,因此需要进行现场保护: 当前程序的位置:R14寄存器存储。 当前CPU的状态:SPSR寄存器存储。 当前临时数据:存储在内存栈中,由R13寄存存储栈首地址。 ARM的寄存器组织 1.通用寄存器:包括R0~R15,以及程序计数器PC . R0~R7称为不分组寄存器; R8~R12有两组物理寄存器。 一组属于快速模式(R8_fiq~R12_fiq) 另一组属于其它模式(R8_usr~R12_usr) ; R13和R14有6组物理寄存器。 其中用户模式和系统模式共用一组 寄存器R13通常作为堆栈指针SP (stack pointer) 寄存器R14常用作连接寄存器LR(link register); 寄存器R15,又称为PC (program counter) ARM的寄存器组织 2.状态寄存器: 当前程序状态寄存器CPSR (current program status Register),可以在任何工作模式下被访问; 程序状态备份寄存器SPSR (Saved Program Status Register),只有在异常模式下,才能被访问 ; CPSR/SPSR 条件标志(Condition Code Flags) N = ALU计算结果为负数(Negative result from ALU(Arithmetic Logical Unit ) flag)。 Z = ALU计算结果为0(Zero result from ALU flag)。 C = ALU计算结果进位(ALU operation Carried out)。 For an addition, including CMN, C =1 if produced a carry. For a subtraction, including CMP, C=0 if produced a borrow. V = ALU计算结果溢出(ALU operation Overflowed)。 Q=E DSP (preserve and restore the CPSR Q flag if an exception occurs about enhanced DSP instructions.) 中断禁止位(Interrupt Disable bits) I = 1,关IRQ。 F = 1,关FIQ。 T Bit (Architecture v4T only) T = 0, 处理器当前处于ARM状态(Processor in ARM state) T = 1, 处理器当前处于Thumb状态(Processor in Thumb state) ARM指令编码方式 其中,内的项是必须的,{}内的项是可选的,如opcode是指令助记符,是必须的,而{cond}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。其中: Opcode:指令助记符,如LDR,STR 等。 Cond:执行条件,如EQ,NE 等。 S:是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响。 Rd:目标寄存器。 Rn:第一个操作数的寄存器。 operand2:第二个操作数。 ARM指令综述 第二个操作数组成 每个立即数由一个8位的常数循环右移偶数位得到,其中循环右移的位数由一个4位的二进制的两倍表示,即immediate=immed_8循环右移(2*rotate_imm)。 ARM指令的条件码 ARM指令的条件码(续) 立即寻址 MOV R0, #0xff00 ; 0xff00-R0 寄存器寻址 MOV R1, R2 ; R2-R1 SUB R0, R1, R2 ; R1-R2-R0 基地址变址寻址 LDR R2,[R3,#0x0F] ;R2←[R3+0x0F] STR R1,[R0,#-2] ;R1←[R0-2] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 寄存器偏移寻址 MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,即R0=R2*8 ANDS R1,R1
文档评论(0)