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