数据传送指令之:单寄存器的Load/Store指令
5.3.4 用户模式字数据传送指令(LDRT/STRT)
1.LDRT指令
(1)指令编码格式
LDRT指令用于从内存中将一个32位的字读取到目标寄存器。
指令的编码格式如图5.9所示。
LDRT指令根据addr_mode>所确定的地址模式将一个32位字读取到指令中的目标寄存器Rd>。如果指令中的寻址方式确定的地址不是字对齐的,则读出的数值要进行循环右移。所移位数为寻址方式确定的地址bits[1∶0]的8倍。也就是说处理器将取到的数值作为字的最低位处理。
图5.9 LDRT指令编码格式
当处理器在特权模式下使用此指令时,内存系统将该操作当作一般用户模式下得内存访问指令。
注意 | 指令的编码格式中,P位指定位“0”,也就是说LDRT指令的寻址方式为固定寻址方式,即后索引编码寻址(post_indexed_addressing_mode)。 |
(2)指令的语法格式
LDR{cond>}T Rd>,post_indexed_addressing_mode>
① cond>
为指令编码中的条件域。它指示LDRT指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ post_indexex_address_mode>
使用后索引地址模式寻址。
注意 | 后索引地址模式中P=0并且W=0(即bit[21]=0、bit[24]=0)。但此指令P=0并且W=1(即bit[21]=1、bit[24]=0)。但实际的寻址操作是一样的。 |
(3)指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
If address[1:0]==0b00
Rd=Memory[address,4]
Else if address[1:0]==0b01
Rd=Memory[address,4] Rotate_Right 8
Else if address[1:0]==0b10
Rd=Memory[address,4] Rotate_Right 16
Else address[1:0]==0b11
Rd=Memory[address,4] Rotate_Right 24
2.STRT指令
(1)指令编码格式
STRT指令用于将一个32位的字数据写入到指令中指定的内存单元。
当处理器在特权模式下执行此指令时,内存系统将该操作当作一般用户模式下的内存访问操作。
指令的编码格式如图5.10所示。
图5.10 STR指令编码格式
(2)指令的语法格式
STR{cond>}T Rd>,post_indexed_addressing_mode>
① cond>
为指令编码中的条件域。它指示STRT指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。
② Rd>
确定使用哪个通用寄存器作为目标寄存器。
③ post_indexed_address_mode>
使用后索引地址模式寻址,参见LDRT指令。
(3)指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Memory[address,4]=Rd
存储器相关文章:存储器原理
评论