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

Thumb指令集之: 单寄存器数据传送指令

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

字节数据读取到指令中的目标寄存器中,并将寄存器的高24位清零。常用于结构体的数据访问。域的基地址放在Rn寄存器中。

(2)指令的语法格式

LDRBRd>,[Rn>,#immed_5>]

①Rd>

目的寄存器。

②Rn>

指令的基址寄存器。

③immed_5>

5位立即数。用于与Rn>寄存器中的数值相加,形成内存访问地址。

(3)指令操作的伪代码

address=Rn+immed_5

Rd=memory[address,1]

(4)对应的ARM指令

LDRBRd>,[Rn>,#immed_5>]

11.5.6字节加载指令LDRB(2)

(1)编码格式

字节加载指令LDRB(2)的编码格式如图11.47所示。

图11.47LDRB(2)指令的编码格式

LDRB(2)字节数据加载指令用于从内存中将一个8位的字节数据读取到指令中的目标寄存器中,并将寄存器的高24位清零。此种形式的LDRB(2)指令常用于数组元素的访问。

(2)指令的语法格式

LDRBRd>,[Rn>,Rm>]

①Rd>

目的寄存器。

②Rn>

存放形成内存访问地址的第一个寄存器。

③Rm>

存放形成内存访问地址的第二个寄存器。

(3)指令操作的伪代码

address=Rn+Rm

Rd=Memory[address,1]

(4)对应的ARM指令

LDRBRd>,[Rn>,Rm>]

11.5.7半字加载指令LDRH(1)

(1)编码格式

半字数据加载指令LDRH(1)的编码格式如图11.48所示。

图11.48LDRH(1)指令的编码格式

LDRH(1)半字数据加载指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位清零。常用于结构体的数据访问。域的基地址放在Rn寄存器中。

(2)指令的语法格式

LDRHRd>,[Rn>,#immed_5>*2]

①Rd>

目的寄存器。

②Rn>

指令的基址寄存器。

③immed_5>

5位立即数。该寄存器数值的2倍将与Rn>寄存器中的数值相加,形成内存访问地址。

(3)指令操作的伪代码

address=Rn+(immed_5*2)

ifaddress[0]==0

data=Memory[address,2]

else

data=UNPREDICTABLE

Rd=data

(4)对应的ARM指令

LDRHRd>,[Rn>,#immed_5>*2]

11.5.8半字数据加载指令LDRH(2)

(1)编码格式

半字数据加载指令LDRH(2)的编码格式如图11.49所示。

LDRH(2)字节数据加载指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位清零。此种形式的LDRH(2)指令常用于数组元素的访问。

图11.49LDRH(2)指令的编码格式

(2)指令的语法格式

LDRBRd>,[Rn>,Rm>]

①Rd>

目的寄存器。

②Rn>

此寄存器存放内存访问基地址。

③Rm>

此寄存器存放内存访问偏移地址。

(3)指令操作的伪代码

address=Rn+Rm

ifaddress[0]==0

data=memory[address,2]

else

data=UNPREDICTABLE

Rd=data

(4)对应的ARM指令

LDRHRd>,[Rn>,Rm>]

11.5.9有符号字节数据加载指令LDRSB

(1)编码格式

有符号字节数据加载指令LDRSB的编码格式如图11.50所示。

图11.50LDRSB指令的编码格式

LDRSB指令用于从内存中将一个8位的字节数据读取到指令中的目标寄存器中,并将寄存器的高24位设置成该字节数据的符号位的值(即将该8位字节数据进行符号位扩展,生成32位字数据)。

(2)指令的语法格式

LDRSBRd>,[Rn>,Rm>]

①Rd>

目的寄存器。

②Rn>

此寄存器存放内存访问基地址。

③Rm>

此寄存器存放内存访问偏移地址。

(3)指令操作的伪代码

address=Rn+Rm

Rd=SignExtend(Memory[address,1])

(4)对应的ARM指令

LDRSBRd>,[Rn>,Rm>]

11.5.10有符号半字数据加载指令LDRSH

(1)编码格式

有符号字节数据加载指令LDRSH的编码格式如图11.51所示。

图11.51LDRSH指令的编码格式

LDRSH指令用于从内存中将一个16位的半字数据读取到指令中的目标寄存器中,并将寄存器的高16位设置成该半字数据的符号位的值(即将该16位半字数据进行符号位扩展,生成32位字数据)。

(2)指令的语法格式

LDRBHRd>,[Rn>,Rm>]

①Rd>

目的寄存器。

②Rn>

此寄存器存放内存访问基地址。

③Rm>

此寄存器存放内存访问偏移地址。

(3)指令操作的伪代码

address=Rn+Rm

ifaddress[0]==0

data=memory[address,2]

else

data=UNPREDICTABLE

Rd=SignExtend[data]

(4)对应的ARM指令

LDRSHRd>,[Rn>,Rm>]

11.5.11寄存器存储指令STR(1)

(1)编码格式

寄存器存储指令STR(1)的编码格式如图11.52所示。

图11.52STR(1)指令的编码格式

这种形式的STR指令将32位通用寄存器的数值存储到内存中。该指令常用于结构体的数据访问。域的基地址放在Rn寄存器中。

(2)指令的语法格式

STRRd>,[Rn>,#immed_5>*4]

①Rd>

目的寄存器。用于存放从内存中取出的数据。

②R

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

网站地图

Top