高性能超标量CPU:微架构剖析与设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 数据处理与访存类指令定义

ARM的数据处理指令对输入操作数进行运算,将输出操作数写回寄存器。支持的操作包括各种32位/64位数据类型的算术运算和逻辑运算。ARM数据处理指令通常包含两个源操作数、一个目标操作数。第一个源操作数为寄存器,第二个源操作数可以为寄存器,也可以为立即数。部分数据处理指令见表1-2。

表1-2 数据处理指令

(续)

访存类(Load/Store)指令完成寄存器和存储器之间的数据搬移,包含更丰富的寻址模式,如立即数寻址、寄存器寻址和自动变址寻址等。

访存类指令的汇编格式为:LDR|STR {<cond>}{B} Rd, [Rn, <offset>],访存类指令构造一个地址,它从基地址寄存器(Rn)开始,然后加上或减去一个无符号立即数或寄存器偏移量。基址或计算出的地址用于从存储器中读取一个字的数据,或者将一个字写入存储器中。

前变址的寻址模式使用计算出的地址进行访存操作,如果需要写回寄存器,则将基址寄存器更新为计算出的值。

后变址的寻址模式使用未修改的基址寄存器作为访存的地址,然后将基址寄存器更新为计算出的地址。

上面的例子是将GPIO的地址赋给r1,然后通过STORE指令将r0的数据写到GPIO中。