国外开源网站建设软件,吉林省最新今天的消息,免费外贸自建站,网站开发后端有哪些ARM寄存器组织 寄存器概念 寄存器是处理器内部的存储器#xff0c;没有地址 寄存器作用 一般用于暂时存放参与运算的数据和运算结果 在某个特定模式下只能使用当前模式下的寄存器#xff0c;一个模式下特有的寄存器别的模式下不能使用 一共是40个寄存器 寄存器分类 通用寄… ARM寄存器组织 寄存器概念 寄存器是处理器内部的存储器没有地址 寄存器作用 一般用于暂时存放参与运算的数据和运算结果 在某个特定模式下只能使用当前模式下的寄存器一个模式下特有的寄存器别的模式下不能使用 一共是40个寄存器 寄存器分类 通用寄存器 专用寄存器 R15PC程序计数器用于存储当前取址指令的地址 R14LR链接寄存器执行跳转指令(BL/BLX)时LR会自动保存跳转指令下一条指令的地址产生异常时对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址 R13SP栈指针用于存储当前模式下的栈顶地址 CPSR当前程序状态寄存器、控制当前CPU处于哪种状态 控制寄存器 ARM异常处理 异常的概念 处理器正常执行程序的过程中可能会遇到一些不正常的事情例如中断这是处理器会暂停当前的程序转而处理这个异常事件等处理结束后再返回被异常打断的点继续执行原本的程序。 异常处理机制 不同处理器上应对异常的流程大体相同但是再具体实现上可能会有所区别例如处理器遇到哪些事情会被认定为异常事件、遇到异常事件后处理器有哪些动作、处理器将如何转到异常处理程序等这些细节被成为处理器的异常处理机制 arm异常源 导致异常发生的事件成为异常源 异常源 FIQ快速中断请求比IRQ优先级高 IRQ外部中断请求 Reset复位 Software Interrupt执行swi指令 Data Abort数据终止 Prefetch Abort指令预取终止 Undefined Instruction遇到不能处理的指令 异常模式 ARM的基本工作模式中有五种工作模式 在arm工作中会经常遇到模式之间的切换 注意区分异常源和异常模式 ARM异常响应 高优先级中断可以打断低优先级中断同等优先级中断和比自己更低优先级的中断不能打断正在进行的中断 ARM产生异常后的动作 自动完成 拷贝CPSR寄存器中的内容到对应异常模式下的SPSR寄存器中 修改CPSR寄存器的值修改中断禁止位禁止相应的中断修改模式位进入相应的异常模式修改状态位进入ARM状态 处理异常必须切换成ARM模式 保存放回地址到对应异常模式下的LRR14_*寄存器中 设置PCR15寄存器为相应的异常向量 当前指令执行完才会处理异常比如假如正在执行一条指令这时突然来了异常不管这条指令是刚刚执行还是已经将要结束都要先执行完才会处理异常 异常向量表 因为异常向量表空间有限不会在这里写异常处理程序而是在对应的位置写一条跳转指令使其跳转到指定的异常处理程序的入口这个异常处理程序的入口是固定的其实也就是异常处理的回调函数。 遇到异常后处理器自动将PCR15寄存器修改为对应的地址 表中为每个异常源分配了四个字节的存储空间 异常向量表的本质是内存中的一段代码32字节 异常优先级 多个异常同时产生时的顺序 Reset优先级最高 Data Abort FIQ IRQ Prefetch Abort Software Interrupt Undefined instruction FIQ模式有5个私有寄存器R8-R12 进入IRQ异常后首先就是要保护现场也就是将原本寄存器中的数据存储起来因为IRQ模式和User模式下很多寄存器是公用的如果直接操作会把之前的覆盖掉 为什么只有r8到r12是FIQ特有的如果将所有的寄存器都变为自己特有的不是更快吗 考虑到不同模式之间要交互数据比如USER要和FIQ模式交互数据肯定是放到共有的寄存器比较方便 ARM微架构 硬件只有一套但是多条流水线同时进行如果只有一条流水线取址后就被闲置了所以要多流水线进行不断进行取址 多核处理器