Thumb指令集之: 單寄存器數據傳送指令
11.5.9有符號字節數據加載指令LDRSB
(1)編碼格式
有符號字節數據加載指令LDRSB的編碼格式如圖11.50所示。
圖11.50LDRSB指令的編碼格式
LDRSB指令用于從內存中將一個(gè)8位的字節數據讀取到指令中的目標寄存器中,并將寄存器的高24位設置成該字節數據的符號位的值(即將該8位字節數據進(jìn)行符號位擴展,生成32位字數據)。
(2)指令的語(yǔ)法格式
LDRSBRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
此寄存器存放內存訪(fǎng)問(wèn)基地址。
③Rm>
此寄存器存放內存訪(fǎng)問(wèn)偏移地址。
(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指令用于從內存中將一個(gè)16位的半字數據讀取到指令中的目標寄存器中,并將寄存器的高16位設置成該半字數據的符號位的值(即將該16位半字數據進(jìn)行符號位擴展,生成32位字數據)。
(2)指令的語(yǔ)法格式
LDRBHRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
此寄存器存放內存訪(fǎng)問(wèn)基地址。
③Rm>
此寄存器存放內存訪(fǎng)問(wèn)偏移地址。
(3)指令操作的偽代碼
address=Rn+Rm
ifaddress[0]==0
data=memory[address,2]
else
data=UNPREDICTABLE
Rd=SignExtend[data]
(4)對應的ARM指令
LDRSHRd>,[Rn>,Rm>]
評論