Thumb指令集之: 单寄存器数据传送指令
11.5.12寄存器存储指令STR(2)
(1)编码格式
寄存器存储指令STR(2)的编码格式如图11.53所示。
图11.53STR(2)指令的编码格式
寄存器装载指令STR(2)将一个32位通用寄存器数据存储到内存单元中。此种形式的STR指令常被用于访问数组中的元素。
(2)指令的语法格式
LDRRd>,[Rn>,Rm>]
①Rd>
目的寄存器。
②Rn>
存放形成内存访问地址的第一个寄存器。
③Rm>
存放形成内存访问地址的第二个寄存器。
(3)指令操作的伪代码
address=Rn+Rm
ifaddress[1:0]==0b00
Memory[address,4]==Rd
Else
Memory[address,4]==UNPREDICTABLE
(4)对应的ARM指令
STRRd>,[Rn>,Rm>]
11.5.13寄存器存储指令STR(3)
(1)编码格式
寄存器存储指令STR(3)的编码格式如图11.54所示。
图11.54STR(3)指令的编码格式
寄存器存储指令STR(3)允许将一个32位通用寄存器的值存储到内存。此种形式的STR指令常被用于访问堆栈数据。
(2)指令的语法格式
STRRd>,[SP,#immed_8>*4]
①Rd>
目的寄存器。
②SP
堆栈指针寄存器,用于计算内存访问的地址。
③immed_8>
8位立即数。该立即数的4倍将和堆栈指针寄存器SP的值相加,形成内存访问地址。
(3)指令操作的伪代码
address=SP+(immed_8*4)
ifaddress[1:0]==0b00
Memory[address,4]=Rd
Else
Memory[address,4]=UNPREDICTABLE
(4)对应的ARM指令
STRRd>,[SP,#immed_8>*4]
评论