ARM体系架构—ARMv7-A指令集:数据处理指令

一、ARMv7-A指令集

ARMv7-A架构是32位处理器架构。也是load/store架构,即数据处理指令操作在通用寄存器完成,只有load/store指令可以访问内存。此外ARM指令集还有一大特点,就是ARM指令集几乎所有的指令都可以增加条件码。
ARM指令集可以归为一下四类:

  1. 数据处理操作(ALU操作例如ADD);
  2. 内存操作(load/store);
  3. 控制流(循环,跳转,条件码等);
  4. 系统(协处理器,debug,模式切换等等)。

本文重点介绍数据处理指令。

二、ARMv7-A条件码

ARM指令集的一个特性是几乎所有的指令都可以增加条件码(绝大多数其他处理器架构中,只有跳转指令可以加条件码),以利用CPSR(Current Program Status Register)寄存器中的状态位。在简单的if/then/else结构中,这一特性对于避免条件分支或复合比较非常有用。
举例说明条件码的好处(两个值找到较小的):

if (a < b)
	n = a;
else
    n = b;

无条件码汇编:
在这里插入图片描述
有条件码汇编:
在这里插入图片描述
MOV是算术运算指令,功能是将第二操作数传送到目标寄存器。
其后增加了条件码GE和LT,GE(greater than or equal)表示CMP比较结果是大于等于,LT(less than)表示CMP比较结果是小于。因而三条指令实现了相同的功能。

ARM指令集中条件码如下图所示。
Condition code suffixes
条件指令码中(Z)ero, (N)egative, (C)arry, o(V)erflow状态位是CPSR寄存器中的4个bit位,如下图所示,[31:27]4个bit分别对应N,Z,C,V,其含义如下表。关于CPSR的说明可以参看 《ARM体系架构—ARMv7-A处理器模式及寄存器》.
CPSR bits

Field 作用
N ALU返回运算结果是否为负数
Z ALU返回运算结果是否为0
C ALU运算是否发生进位
V ALU运算是否发生溢出

三、ARMv7-A数据处理指令

ARM core只能在寄存器上执行数据处理,而不能直接在内存上执行。
数据操作指令一般由一个目标寄存器和两个源操作数组成,所有ARM数据处理指令都可以加后缀(Suffix),并影响状态标志(CPSR)。其基本格式如下:
O p e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值