《ARM9嵌入式系统设计直通车》——潘念 第四章 ARM指令集与寻址方式 学习笔记

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

4.1 指令集编码

所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。

4.2 条件执行

ARM指令根据CPSR中的最高四位[31:28]来表示“条件码”,根据CPSR中的条件位判断是否执行指令条件码如下图
条件码表

4.3 指令分类及指令格式

ARM指令集分为6大类

  • 数据处理指令
  • Load/Store指令
  • 跳转指令
  • 程序状态寄存器处理指令
  • 协处理器指令
  • 异常产生指令

ARM指令的基本格式:

<opcode>{<cond>}{S}   <Rd>,<Rn>{,<operand2>}

4.3.1 数据处理指令

ARM的数据处理指令主要完成算数和逻辑运算操作。可分为以下六类

  • 数据传送指令
  • 算术指令
  • 逻辑指令
  • 比较指令
  • 测试指令
  • 乘法指令

数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作
所有的ARM指令可以选择使用S后缀,以使指令影响状态标志

4.3.2 Load/Store指令

ARM的数据存取指令Load/Store唯一用于寄存器和存储器之间进行数据传送的指令。
ARM指令集中有三种基本的数据存取指令

  • 单寄存器存取指令
  • 多寄存器存取指令
  • 单寄存器交换指令

4.3.3 程序状态寄存器与通用寄存器之间的传送指令

通过“读取-修改-写回三个步骤的操作实现修改状态寄存器,ARM中有两条指令用于程序状态寄存器与通用寄存器之间的数据传送

  • 状态寄存器到通用寄存器的传送指令(MRS
  • 通用寄存器到状态寄存器的传送指令(MSR)

4.3.4 转移指令

转移指令可以实现从当前指令向前或向后32M地址空间跳转。可分为4种

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38210354/article/details/92978036