新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 数据传送指令之:单寄存器的Load/Store指令

数据传送指令之:单寄存器的Load/Store指令

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257080.htm

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

存储器相关文章:存储器原理




评论


相关推荐

技术专区

关闭