Thumb指令集之: 單寄存器數(shù)據(jù)傳送指令
11.5.12寄存器存儲指令STR(2)
(1)編碼格式
寄存器存儲指令STR(2)的編碼格式如圖11.53所示。
圖11.53STR(2)指令的編碼格式
寄存器裝載指令STR(2)將一個32位通用寄存器數(shù)據(jù)存儲到內(nèi)存單元中。此種形式的STR指令常被用于訪問數(shù)組中的元素。
(2)指令的語法格式
LDRRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
存放形成內(nèi)存訪問地址的第一個寄存器。
③Rm>
存放形成內(nèi)存訪問地址的第二個寄存器。
(3)指令操作的偽代碼
address=Rn+Rm
ifaddress[1:0]==0b00
Memory[address,4]==Rd
Else
Memory[address,4]==UNPREDICTABLE
(4)對應(yīng)的ARM指令
STRRd>,[Rn>,Rm>]
11.5.13寄存器存儲指令STR(3)
(1)編碼格式
寄存器存儲指令STR(3)的編碼格式如圖11.54所示。
圖11.54STR(3)指令的編碼格式
寄存器存儲指令STR(3)允許將一個32位通用寄存器的值存儲到內(nèi)存。此種形式的STR指令常被用于訪問堆棧數(shù)據(jù)。
(2)指令的語法格式
STRRd>,[SP,#immed_8>*4]
①Rd>
目的寄存器。
②SP
堆棧指針寄存器,用于計算內(nèi)存訪問的地址。
③immed_8>
8位立即數(shù)。該立即數(shù)的4倍將和堆棧指針寄存器SP的值相加,形成內(nèi)存訪問地址。
(3)指令操作的偽代碼
address=SP+(immed_8*4)
ifaddress[1:0]==0b00
Memory[address,4]=Rd
Else
Memory[address,4]=UNPREDICTABLE
(4)對應(yīng)的ARM指令
STRRd>,[SP,#immed_8>*4]
評論