- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 ARM处理器的编程模型删减版
第三章 ARM处理器的编程模型 ARM体系结构的技术特征 ARM的体系结构采用了若干Berkeley RISC处理器设计中的特征 Load/store体系结构 固定的32位指令 3地址指令格式 也放弃了其它若干Berkeley RISC特征 寄存器窗口 延迟转移 所有的指令单周期执行 ARM寄存器组成概述 ARM处理器总共有37个寄存器,可以分为以下两类寄存器 31个通用寄存器 R0~R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und; R13_irq、R14_irq; R8_frq-R14_frq。 6个状态寄存器 CPSR;SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq ARM状态下的寄存器组织 通用寄存器:通用寄存器包括R0~R15,可以分为三类: 通用寄存器:通用寄存器包括R0~R15,可以分为三类: 未分组寄存器R0~R7 分组寄存器R8~R14 程序计数器PC(R15) 未分组寄存器R0~R7 在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。 分组寄存器R8~R12 每次所访问的物理寄存器与处理器当前的运行模式有关 R8~R12:每个寄存器对应两个不同的物理寄存器 当使用fiq模式时,访问寄存器R8_fiq~R12_fiq; 当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。 ARM微处理器的寄存器格式 分组寄存器R13~R14 堆栈指针—R13 子程序连接寄存器—R14 程序计数器PC(R15) 程序状态寄存器(CPSR/SPSR) 寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。 Thumb状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集 Thumb状态下的寄存器组织图 Thumb状态下的寄存器与ARM状态下的寄存器关系 Thumb状态下的寄存器与ARM状态下的寄存器关系图 程序状态寄存器 程序状态寄存器的每一位的安排 程序状态寄存器的条件码标志 N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行 影响标志位的指令 程序状态寄存器的控制位 状态寄存器的低8位(I、F、T和M[4:0])称为控制位,发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。 处理器运行模式及可以访问的寄存器 异常(Exceptions) 当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 ARM体系结构所支持的异常类型 对异常的响应 若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关); 若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。 例如:在软件中断异常SWI,指令 MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。 异常响应伪代码 从异常返回 FIQ(Fast Interrupt Request) FIQ异常是为了支持数据传输或者通道处理而设计的。 IRQ(Interrupt Request) IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入低电平产生,IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。 ABORT(中止) 产生中止异常意味着对存储器的访问失败。ARM微处理器在存储器访问周期内检查是否发生中止异常。 Software Interruupt(软件中断) 软件中断指令(SWI)用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令可以从SWI模式返回,无论是在ARM状态还是Thumb状态: MOVS PC , R14_svc 以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。 Undefined Instruction(未定义指令
文档评论(0)