新闻中心

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

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

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

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

11.5.3LDR(3)

(1)编码格式

LDR(3)的编码格式如图11.44所示。

图11.44LDR(3)指令的编码格式

LDR(3)允许将一个32位内存数据装载到通用寄存器。此种形式的LDR指令常被用于访问PC相关(PC-relative)数据。

(2)指令的语法格式

LDRRd>,[PC,#immed_8>*4]

①Rd>

目的寄存器。

②PC

程序指针寄存器,用于计算内存访问的地址。计算地址时,PC值的bit[1]被系统默认为0进行计算,所以产生的内存访问地址必为字对齐。

③immed_8>

8位立即数。该立即数的4倍将和PC值相加,形成内存访问地址。

(3)指令操作的伪代码

Address=(PC[31:2]2)+(immed_8*4)

Rd=Memory[address,4]

(4)对应的指令

LDRRd>,[PC,#immed_8>*4]

11.5.4寄存器装载指令LDR(4)

(1)编码格式

寄存器装载指令LDR(4)的编码格式如图11.45所示。

图11.45LDR(4)指令的编码格式

寄存器装载指令LDR(4)允许将一个32位内存数据装载到通用寄存器。此种形式的LDR指令常被用于访问堆栈数据。

(2)指令的语法格式

LDRRd>,SP,#immed_8>*4]

①Rd>

目的寄存器。

②SP

堆栈指针寄存器,用于计算内存访问地址。

③immed_8>

8位立即数。该立即数的4倍将和SP值相加,形成内存访问地址。

(3)指令操作的伪代码

Address=SP+(immed_8*4)

Ifaddress[1:0]==0b00

Data=memory[address,4]

Else

Data=UNPREDICTABLE

Rd=data

(4)对应的指令

LDRRd>,[SP,#immed_8>*4]



评论


相关推荐

技术专区

关闭