ARM编程模型

ARM编程模型

1.机器指令、伪指令和宏指令

    机器指令:能被处理器直接执行,而伪指令宏和宏指令不能。机器指令包括ARM指令集和Thumb指令集 ;
     伪指令:在源程序汇编期间,由汇编编译器处理。其作用是为汇编程序完成准备工作;
     宏指令:在程序中用于调用宏,宏是一段独立的程序代码;在程序汇编时,对宏调用进行展开,用宏体代替宏指令。

 

2.ARM处理器工作模式

   ARM微处理器支持7种工作模式:用户模式、系统模式、快速中断模式、外部中断模式、管理模式、中止模式、未定义指令模式。
   除用户模式之外的其余6种称为非用户模式,或特权模式。在特权模式中,除系统模式之外的其余5种称为异常模式。处理器的各种工作模式由当前程序状态寄存器CPSR的低5位M[4:0]决定。

3.工作模式切换:

工作模式在下列情况下发生自动切换 
   发生异常,处理器自动改变CPSR中M[4:0]的值,进入相应的工作模式;
   处理器处于特权模式时,用指令向CPSR的M[4:0]字段写入特定的值,进入相应的工作模式。
   用户模式时,不能改变工作模式,除非发生异常。

4.ARM处理器7种工作模式

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

特权模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

异常模式

 

用户和系统模式

 

5.处理器的工作状态

 

  从编程的角度讲,ARM处理器工作在两种状态:ARM状态或Thumb状态。
(1)ARM状态:处理器执行32位的ARM指令集时,工作在这种状态。
(2)Thumb状态:处理器执行16位的thumb指令集时,工作在这种状态。 状态切换:通过跳转    指令实现。

 

6.ARM的寄存器组织

 

  37个寄存器:31个通用寄存器,包括程序计数器PC;
  6个状态寄存器。
  寄存器均为32位,分成7组,各工作模式拥有自己的寄存器组,只能访问自己的寄存器组。

  有些寄存器是重叠的,有些是工作模式特有的。
  在不同的工作模式和处理器状态下,程序员可以访问的寄存器不尽相同。

 

 

ARM状态各模式下的寄存器

 

 

ARM寄存器分类

ARM状态各模式下可以访问的寄存器

一般的通用寄存器

 

R0~R7通用寄存器

R8~R14通用寄存器

R8~R12的两个分组

R13、R14的6个分组

堆栈指针寄存器R13(SP)

链接寄存器R14(LR)

R14(LR)的作用


作用:保存返回地址
例如:
1.程序A执行过程中调用程序B;
2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);

3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;

 

 

程序计数器R15(PC)

程序状态寄存器CPSR

Thumb寄存器在ARM寄存器上的映射

状态寄存器
  CPSR:当前程序状态寄存器,可以在任何工作模式下被访问。
  SPSR:程序状态保存寄存器,只有在异常模式下,才能被访问;各异常模式拥有自己的SPSR。发生异常时,SPSR保存CPSR的值,格式同CPSR。
  状态标志:5个,N符号位,Z零标志,C进位,V溢出位,Q DSP运算溢出位。
  控制标志:4个,I中断允许,F快速中断允许,T状态选择,M[4:0] 处理器工作模式

 

 

条件标志位

控制位

异常中断
  异常中断:处理器由于外部或内部的原因,停止执行当前任务,转而处理特定的事件,处理完后返回原程序,继续执行。
当异常发生时,处理器首先自动保存当前状态,即返回地址存入寄存器R14,当前寄存器CPSR存入SPSR中,接着进入相应的工作模式,并执行特定地址的指令。
ARM共有7种类型的异常,不同类型的异常将导致处理器进入不同的工作模式,并执行不同特定地址的指令。

7种类型异常中断
  复位:复位异常时,处理器立即停止当前程序,进入禁止中断的管理模式,并从地址0x00000000处开始执行。
  未定义指令:当前指令未定义时,便产生未定义指令中断。
  软件中断:用户模式下使用指令SWI时,处理器便产生软件中断,进入管理模式,以调用特权操作。
  指令预取中止:预取指令的地址不存在,或不允许当前指令访问时,存储器会向处理器发出中止信号;预取指令被执行时才会产生该类异常。
  数据访问中止:数据访问指令的地址不存在,或不允许当前指令访问时,产生数据中止异常。
  外部中断请求:外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。
  快速中断请求:快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。


异常向量

 

 

 

异常中断的优先级

复位
当nRESET信号由低变为高电平时,ARM处理器执行下列操作:
1. 强制CPSR中的M[4:0]变为b10011(管理模式);
2. 置位CPSR中的I和F位;
3. 清零CPSR中的T位;
4. 强制PC从地址0x00开始对下一条指令进行取指;
5. 返回到ARM状态并恢复执行。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值