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