数据传送指令之:单寄存器的Load/Store指令
5.3.6 有符号的字节/半字数据传送指令(LDRBT/STRBT)
1.LDRSB指令
(1)指令编码格式
LDRSB指令根据addr_mode>所确定的地址模式将一个8位字节读取到指令中的目标寄存器Rd>。
注意 | LDRSB与LDRB指令的不同之处在于它将寄存器的高24位设置成该字节数据的符号位的值(即将该8位字节数据进行符号位扩展,生成32位字数据)。 |
指令的编码格式如图5.13所示。
图5.13 LDRSB指令编码格式
(2)指令的语法格式
LDR{cond>}SB Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRSB指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
If ConditionPassed{cond} then
data=Memory[address,1]
Rd=SignExtend{data}
2.LDRSH指令
(1)指令编码格式
LDRSH指令根据addr_mode>所确定的地址模式将一个16位半字读取到指令中的目标寄存器Rd>。
注意 | LDRSH与LDRH指令的不同之处在于它将寄存器的高16位设置成该字节数据的符号位的值(即将该16位字节数据进行符号位扩展,生成32位字数据)。 |
指令的编码格式如图5.14所示。
图5.14 LDRSH指令编码格式
(2)指令的语法格式
LDR{cond>}SH Rd>,addr_mode>
① cond>
为指令编码中的条件域。它指示LDRSH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ addr_mode>
它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。
(3)指令操作的伪代码
If ConditionPassed{cond} then
if address[0]==0
data=Memory[address,2]
else /*address[0] ==1*/
data=UNPREDICTABLE
Rd=SignExtend{data}
存储器相关文章:存储器原理
评论