Thumb指令集之: 单寄存器数据传送指令
11.5.9有符号字节数据加载指令LDRSB
(1)编码格式
有符号字节数据加载指令LDRSB的编码格式如图11.50所示。
图11.50LDRSB指令的编码格式
LDRSB指令用于从内存中将一个8位的字节数据读取到指令中的目标寄存器中,并将寄存器的高24位设置成该字节数据的符号位的值(即将该8位字节数据进行符号位扩展,生成32位字数据)。
(2)指令的语法格式
LDRSBRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
此寄存器存放内存访问基地址。
③Rm>
此寄存器存放内存访问偏移地址。
(3)指令操作的伪代码
address=Rn+Rm
Rd=SignExtend(Memory[address,1])
(4)对应的ARM指令
LDRSBRd>,[Rn>,Rm>]
11.5.10有符号半字数据加载指令LDRSH
(1)编码格式
有符号字节数据加载指令LDRSH的编码格式如图11.51所示。
图11.51LDRSH指令的编码格式
LDRSH指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位设置成该半字数据的符号位的值(即将该16位半字数据进行符号位扩展,生成32位字数据)。
(2)指令的语法格式
LDRBHRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
此寄存器存放内存访问基地址。
③Rm>
此寄存器存放内存访问偏移地址。
(3)指令操作的伪代码
address=Rn+Rm
ifaddress[0]==0
data=memory[address,2]
else
data=UNPREDICTABLE
Rd=SignExtend[data]
(4)对应的ARM指令
LDRSHRd>,[Rn>,Rm>]
评论