Thumb指令集之: 單寄存器數據傳送指令
11.5.7半字加載指令LDRH(1)
(1)編碼格式
半字數據加載指令LDRH(1)的編碼格式如圖11.48所示。
圖11.48LDRH(1)指令的編碼格式
LDRH(1)半字數據加載指令用于從內存中將一個(gè)16位的半字數據讀取到指令中的目標寄存器中,并將寄存器的高16位清零。常用于結構體的數據訪(fǎng)問(wèn)。域的基地址放在Rn寄存器中。
(2)指令的語(yǔ)法格式
LDRHRd>,[Rn>,#immed_5>*2]
①Rd>
目的寄存器。
②Rn>
指令的基址寄存器。
③immed_5>
5位立即數。該寄存器數值的2倍將與Rn>寄存器中的數值相加,形成內存訪(fǎng)問(wèn)地址。
(3)指令操作的偽代碼
address=Rn+(immed_5*2)
ifaddress[0]==0
data=Memory[address,2]
else
data=UNPREDICTABLE
Rd=data
(4)對應的ARM指令
LDRHRd>,[Rn>,#immed_5>*2]
11.5.8半字數據加載指令LDRH(2)
(1)編碼格式
半字數據加載指令LDRH(2)的編碼格式如圖11.49所示。
LDRH(2)字節數據加載指令用于從內存中將一個(gè)16位的半字數據讀取到指令中的目標寄存器中,并將寄存器的高16位清零。此種形式的LDRH(2)指令常用于數組元素的訪(fǎng)問(wèn)。
圖11.49LDRH(2)指令的編碼格式
(2)指令的語(yǔ)法格式
LDRBRd>,[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=data
(4)對應的ARM指令
LDRHRd>,[Rn>,Rm>]
評論