微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 数据传送指令之:单寄存器的Load/Store指令

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

时间:09-13 来源:互联网 点击:

cond>

为指令编码中的条件域。它指示LDRH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。

② Rd>

确定使用哪个通用寄存器作为目标寄存器。

注意

如果PC作为目标寄存器,指令的执行结果不可预知。

③ addr_mode>

它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。

(3)指令操作的伪代码

if ConditionPassed{cond} then

if address[0]==0

data=Memory[address,2]

else /*address[0]==1*/

data=unpredictable

Rd=data

注意

在包含系统控制协处理器的芯片应用中,如果定义了地址对齐检测,当bit[0]!=0时,将发生地址对齐异常。

2.STRH指令

(1)指令编码格式

STRH指令从寄存器中取出指定的16位半字放入寄存器的低16位,并将寄存器的高位补0。

指令的编码格式如图5.8所示。

图5.8 STRH指令的编码格式

(2)指令的语法格式

STR{cond>}H Rd>,addr_mode>

① cond>

指令编码中的条件域。它指示STRH指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。

② Rd>

确定使用哪个通用寄存器作为目标寄存器。

注意

如果PC作为目标寄存器,指令的执行结果不可预知。

③ addr_mode>

它确定了指令编码中的I、P、U、W、Rn和addr_mode>位。所有的寻址模式中,都会确定一个基址寄存器Rn。

(3)指令操作的伪代码

if ConditionPassed{cond} then

if address[0]==0

data=Rd[15:0]

else /*address[0]==1*/

data=unpredictable

Memory[address,2]=data

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

5.3.5 用户模式字节数据传送指令(LDRBT/STRBT)

1.LDRBT指令

(1)指令编码格式

LDRBT指令根据post_indexed_addressing_mode>地址模式将一个8位字节读取到指令中的目标寄存器Rd>。

当处理器在特权模式下执行此指令时,内存系统将该操作当作一般用户模式下的内存访问操作。

指令的编码格式如图5.11所示。

图5.11 LDRBT指令编码格式

注意

LDRBT指

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top