儿童床厂家
免费服务热线

Free service

hotline

010-00000000
儿童床厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

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

发布时间:2020-06-30 20:38:00 阅读: 来源:儿童床厂家

本文引用地址:单寄存器数据传送指令Thumb指令集支持寄存器的装载和存储,即LDR和STR指令。8和类型的Load/Store指令在Thumb指令集中可用。这些指令使用两种寻址模式:寄存器偏移和立即数偏移。指令所能存取的数据包括字、半字和字节,同时半字和字节可以为有符号数或无符号数。

表11.4总结了Thumb状态下可用的数据传送指令。

表11.4 Thumb状态数据传送指令

助记符

说明

操作

LDR

传送32位字到寄存器

Rd-mem32[address]

STR

存储32位寄存器的值

Rd->mem32[address]

LDRB

传送8位字节到寄存器

Rd-mem8[address]

STRB

保存寄存器中的字节

Rd->mem8[address]

LDRH

传送16位半字到寄存器

Rd-mem16[address]

STRH

保存寄存器中的半字

Rd->mem16[address]

LDRSB

装载有符号字节到寄存器

Rd-sighExtend(mem8[address])

STRSB

装载有符号半字到寄存器

Rd-sighExtend(mem16[address])

Thumb数据传送指令的基本语法格式分为以下4种。

①opcode1>Rd>,[Rn>,#5_bit_offset>]

其中,opcode1>:=LDR|LDRH|LDRB|STR|STRH|STRB

②opcode2>Rd>,[Rn>,Rm>]

其中,opcode2>:=LDR|LDRH|LDRB|LSRSH|STR|STRH|STRB

③LDRRd>,[PC,8_bit_offset>]

④opcode3>Rd>,[SP,#8_bit_offset>]

其中,opcode3>:=LDR|STR

下面详细介绍各数据传送指令的语法和使用。

11.5.1寄存器装载指令LDR(1)(1)编码格式

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

图11.42LDR(1)指令的编码格式

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

(2)指令的语法格式

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

①Rd>

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

②Rn>

基址寄存器,用于存放所取数据的基地址。

③immed_5>

5位立即数。该立即数的4倍加上基址寄存器的值形成目标地址。

(3)指令操作的伪代码

Address=Rn+(immed_5*4)

Ifaddress[1:0]==0b00

Data=Memory[address,4]

Else

Data=UNPREDICTABLE

Rd=data

(4)对应的ARM指令

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

注意

如果指令访问地址非字对齐,则指令的执行结果不可预知。

11.5.2寄存器装载指令LDR(2)(1)编码格式

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

图11.43LDR(2)指令的编码格式

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

(2)指令的语法格式

LDRRd>,[Rn>,Rm>]

①Rd>

目的寄存器。

②Rn>

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

③Rm>

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

(3)指令操作的伪代码

Address=Rn+Rm

Ifaddress[1:0]==0b00

Data=Memory[address,4]

Else

Data=UNPREDICTABLE

Rd=data

(4)对应的ARM指令

LDRRd>,[Rn>,Rm>]

沈阳制做劳保工服

潍坊防静电工作服制做

日照西服定做

黑龙江制做工作服

相关阅读