ARM System Developer's Guide 学习笔记 3.1 数据处理指令
数据处理指令(Data Processing Instructions)
数据处理指令操控着寄存器中的数据。
包含:数据移动指令,算术运算指令,逻辑运算指令,比较指令和乘法指令。大多数数据处理指令可以通过桶型移位器处理其中一个操作数。
ARM指令集中最大的一族,这族指令的格式相同。如果在数据处理指令中看到 ‘S’ 后缀,那么它将在cpsr(计算机程序状寄存器)中更新标志位。移动和逻辑指令更新 进位标志位 ‘C’ ,取反标志位 ‘N’ , 零标志位 ‘Z’。 ‘C’ 的设置来自上一位移出的结果 ; 将**‘N’** 设置在在结果的31bit上;如果结果为零,设置 ‘Z’。
记住,这是一个 load / store架构,这些指令只操作寄存器,而不是内存。
他们在两个操作数上执行特定的操作,并将结果存放到目标寄存器。
第一个操作数总是一个寄存器Rn。
第二个操作数通过barrel shifter送往ALU。
1. 数据移动指令 (MOVE INSTRUCTIONS)
- 概念:copy N( 寄存器/值 ) 到 目标寄存器 Rd。
- 常用数据移动指令 及其 语法
- 例子:
2. 桶型移位器 BARREL SHIFTER
-
移位:上述N 在 MOV指令中是一个简单的寄存器,它也可以是一个经过桶型移位器预处理的寄存器Rm。
数据处理指令在算数逻辑单元(ALU内执行),ARM一个独特的特点是可以将32位二进制数在进入ALU之前进行移位,增加了数据处理的灵活性。
-
ARM 微处理器内嵌的桶型移位器(Barrel Shifter),支持数据的各种移位操作
-
不需要移位器的指令:MUL(multiply),CLZ(count leading zeros), QADD(signed saturated 32-bit add)
-
ALU 和 BARREL SHIFTER
如图:寄存器Rn不经过预处理进入到ALU。Rm经过预处理进入移位器以后再进入ALU。
-
例子:寄存器Rm 移动到目标寄存器之前进行逻辑左移logicla shift left