ARM汇编 1.arm架构

ARM处理器工作模式

Cortex-A系列的8种工作模式,比起Cortex-M系列多了monitor模式

ARM汇编 1.arm架构_第1张图片

只需掌握用户模式、一般中断模式、管理模式

异常源

ARM汇编 1.arm架构_第2张图片

不同的异常源会进入不同的工作模式

  • FIQ异常 => FIQ模式
  • IRQ异常 => IRQ模式
  • Prefetch、Data异常 => 中止模式
  • Undef => 未定义指令中止模式
  • SWI、reset异常 => 管理模式

ARM寄存器

ARM汇编 1.arm架构_第3张图片

  • R8-R14对于另外6种异常模式有不同的含义,和系统/用户模式下的可能不一样(根据图中的三角标志区分)
  • SPSR针对不同的异常有不同的状态含义
  1. 未分组寄存器R0-R7:所有模式下指向同一个寄存器,在切换模式的时候要注意这部分寄存器的数据保护
  2. 分组寄存器R8-R14:对应的物理寄存器与所处模式有关,采用_mode来区分不同的寄存器
  3. 堆栈寄存器R13(SP):堆栈指针,用来指向不同模式下的栈空间
  4. R14(LR)链接寄存器:当进行子程序跳转时,R14保存PC的值,在执行完子程序后,通过读取R14的值来返回原来的程序位置。
  5. R15(PC)程序计数器:PC值 = 当前程序执行位置 + 8 (多级流水线技术)
  6. CPSR:当前程序状态寄存器,存储了一些信息:主要包括处理器模式、处理器状态、中断禁止位、条件位
  7. SPSR:备份的程序状态寄存器,当异常发生时,保存当前CPSR的值,从异常退出后用SPSR恢复CPSR

ARM汇编 1.arm架构_第4张图片

协处理器

ARM体系结构通过协处理器来扩展指令集,最常用的协处理器是用于控制片上功能的系统协处理器。

控制Cache和存储管理单元MMU的CP15协处理器、设置异常向量表地址的mcr指令。

指令流水线

ARM汇编 1.arm架构_第5张图片

3级流水线:取值、译码、执行

因此正在执行的指令其实是PC-8(对于32位机,一条指令是32位/4字节),间隔两个字节,每个周期同时进行一条指令的执行、下一条指令的译码、下下条指令的预取。

理想的最佳流水线如图:在第一个时间周期,完成了ADD指令的执行、SUB指令的译码、ORR指令的取指

ARM汇编 1.arm架构_第6张图片

还有LDR流水线(从外存中取数据)、分支流水线、中断流水线

都不是理想的流水线、存在一些周期完成一些特定的任务,如保护现场、保存R14、CPSR->SPSR等。

你可能感兴趣的:(ARM汇编,arm开发,汇编,架构)