Thumb指令集之: 单寄存器数据传送指令
11.5.7半字加载指令LDRH(1)
(1)编码格式
半字数据加载指令LDRH(1)的编码格式如图11.48所示。
图11.48LDRH(1)指令的编码格式
LDRH(1)半字数据加载指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位清零。常用于结构体的数据访问。域的基地址放在Rn寄存器中。
(2)指令的语法格式
LDRHRd>,[Rn>,#immed_5>*2]
①Rd>
目的寄存器。
②Rn>
指令的基址寄存器。
③immed_5>
5位立即数。该寄存器数值的2倍将与Rn>寄存器中的数值相加,形成内存访问地址。
(3)指令操作的伪代码
address=Rn+(immed_5*2)
ifaddress[0]==0
data=Memory[address,2]
else
data=UNPREDICTABLE
Rd=data
(4)对应的ARM指令
LDRHRd>,[Rn>,#immed_5>*2]
11.5.8半字数据加载指令LDRH(2)
(1)编码格式
半字数据加载指令LDRH(2)的编码格式如图11.49所示。
LDRH(2)字节数据加载指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位清零。此种形式的LDRH(2)指令常用于数组元素的访问。
图11.49LDRH(2)指令的编码格式
(2)指令的语法格式
LDRBRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
此寄存器存放内存访问基地址。
③Rm>
此寄存器存放内存访问偏移地址。
(3)指令操作的伪代码
address=Rn+Rm
ifaddress[0]==0
data=memory[address,2]
else
data=UNPREDICTABLE
Rd=data
(4)对应的ARM指令
LDRHRd>,[Rn>,Rm>]
评论