ARM汇编中LD本田UR-V伪指令和LDHighlander指令

2019-08-24 16:16 来源:未知

ARM汇编中LD揽胜极光伪指令和LD凯雷德指令

ARM是LANDISC结构,数据从内部存款和储蓄器到CPU之间的位移只可以通过L/S指令来成功,也等于ldr/str指令。举例想把数据从内部存款和储蓄器中某处读取到贮存器中,只可以利用ldr比方:

ldr r0, 0x12345678

不怕把0x12345678这么些地点中的值贮存到r0中。而mov不能兑现那几个作用,mov只好在寄放器之间活动多少,可能把当时数移动到寄放器中,这一个和x86这种CISC架构的集成电路不相同最大的地方。x86中未有ldr这种指令,因为x86的mov指令能够将数据从内存中移动到寄放器中。

别的还也是有一个就是ldr伪指令,固然ldr伪指令和ARM的ldr指令很像,但是意义不太一样。ldr伪指令能够在即时数前增加=,以代表把贰个值(一般是一个地方)写到某贮存器中,譬如:

ldr r0, =0x12345678

这样,就把0x12345678这么些值写到r0中了。所以,ldr伪指令和mov是比较一般的。只可是mov指令限制了立刻数的长度为8位,也便是不可能超越512。而ldr伪指令未有那些限制。假若应用ldr伪指令时,前边跟的当下数未有抢先8位,那么在骨子里汇编的时候该ldr伪指令是被改造为mov指令 的。
骨子里ldr指令能够装载三个32bit立刻数的传教并不适于,因为其实实际不是这一条语句装载了二个32bit即时数,真正的汇编代码是将某些地方的值传递给r1,就是说要求多少个地点寄存0x12345678以此即时数。并且假设那个即时数能够用mov指令的样式来抒发,会被编写翻译器实际用mov来代表比如:

ldr r1,=0x10

会变成

mov r1,#0x10

综上所述所述:ldr伪指令用于加载三20个人的立时数或三个地方值到钦定存放器。在汇编编写翻译源程序时,ldr伪指令被编写翻译器替换来一条适合的下令。若加载的常数未超过mov或mvn的限量,则利用mov或mvn指令取代该ldr伪指令,不然汇编器将常量归入文字池,并应用一条主次相对偏移的ldr指令从文字池读出常量。
ldr伪指令和ldr指令不是三个同东西。

- adr adrl ldr mov总括整理

  • 2016-11-24 17:36 发布 系统一分配类:嵌入式系统 自定义分类:arm
    标签:arm

AD翼虎那是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地方值读到目的寄存器中。

选取的格式:ADHaval register,exper。

在编写翻译源程序时,汇编器首先计算出如今PC值(当前下令地方)到exper的相距,然后会用一条ADD或然SUB指令来替换那条伪指令,比方:ADD register,PC,#offset_to_exper。

细心,标号exper与指令必得在同等代码段。

例子:adr r0, _start :将钦定地点赋到r0中

.........

_start:
b _start

r0的值为 标号_start 与此指令的距离差 PC值(当前下令地方)

ADRL:

那是一条当中范围的地方读取伪指令,它将依照PC的相对偏移的地点值读到指标贮存器中。

应用的格式:ADPRADOL register,exper。

在编写翻译源程序时,汇编器会用两条适合的授命来替换那条伪指令。

例如:

ADD register,PC,offset1

ADD register,register,offset2

与ADOdyssey相比,它能读取越来越大规模的地址。

在意,标号exper与指令必得在一样代码段。

接下去是LD路虎极光,首先要说的是有几个实物,他们都叫LDOdyssey。

三个是LDSportage伪指令,三个是LDOdyssey指令,名字一样却不是三个事物。

区分的办法就是看第一个参数,即使有等号,正是伪指令。

LDR指令:

事例: ldr r0, 0x12345678 就是把0x12345678那一个地址中的值贮存到r0中。而mov不能够干那个活,mov只能在贮存器之间活动多少,也许把霎时数移动到寄存器中。

LDR伪指令:

例1(立即数): ldr r0, =0x12345678

那样,就把0x12345678那个地方写到r0中了。所以,ldr伪指令和mov是比较相似的。只可是mov指令限制了及时数的长度为8位,也正是无法超过512。而ldr伪指令没有那么些范围。如若选取ldr伪指令时,前面跟的及时数未有当先8位,那么在其实汇编的时候该ldr伪指令是被转变为mov指令的。

例2(标号): ldr r0, =_start :将点名标号的值赋给r0

此间得到的是标号 _start 的相对地址,那一个相对地址(运维地址)是在链接的时候鲜明的。它要据有 2 个 32bit的半空中,一条是命令,另一条是文字池中存放_start 的绝对地址。

这里相比一下,adr r0, _start,和 ldr r0, =_start

它们的目标是大同小异的,想把标签的地方给r0,分化是叁个是相对地址,三个是相对地址。指标一样,可是获得的结果不自然同样。结果是还是不是一律,将要看那几个PC的值,是或不是和链接地址一样了。PC值,以及链接地址,

ARM是传祺ISC结构,数据从内存到CPU之间的移位只好通过L/S指令来达成,也便是ldr/s tr 指令。譬如想把多少从内部存储器中...

TAG标签: 韦德娱乐1946
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于韦德娱乐1946网页版,转载请注明出处:ARM汇编中LD本田UR-V伪指令和LDHighlander指令