ARM指令 LDR 和 ADR的一些区别

LDR 是ARM中的指令,也是伪指令。

当用 LDR r, =imd  // r 为寄存器, imd为立即数

LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。

当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加载这个内存单元的的值到寄存器中。

LDR r, label  和 LDR r, =label的区别:

LDR r, =label 会把label表示的值加载到寄存器中,而LDR r, label会把label当做地址,把label指向的地址中的值加载到寄存器中。

譬如 label的值是 0x8000, LDR r, =label会将 0x8000加载到寄存器中,而LDR r, label则会将内存0x8000处的值加载到寄存器中。

ADR 和 ADRL 伪指令:

ADR 和 ADRL 伪指令用于将一个地址加载到寄存器中。

ADR为小范围的地址读取伪指令。ADR指令将基于PC相对偏移的地址值读取到寄存器中。在汇编编译源程序时,ADR伪指令被编译器替换在一条合适的指令,通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能使用一条指令实现,则产生错误。其能加载的地址范围,当为字节对齐时,是-1020~1020,当为非字对齐时在-255~255之间。

ADRL是中等范围的地址读取指令。会被编译器翻译成两条指令。如果不能用两条指令表示,则产生错误。

ADRL能加载的地址范围当为非字节对齐时是-64K~64K之间;当为字节对齐时是-256K~256K之间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阻塞 cpu占用

请问,windowsxp系统下,有一个线程A,此线程中需要wait一个信号,我有以下观点,请大家帮我判断一下我的观点对不对,谢谢!如果我用阻塞方式,则一旦轮到这个线程执行,os只要发…

登录验证应该是进行在客户端还是服务器端_网站登录认证方式

目前大部分软件系统资源访问都是使用HTTP协议,HTTP是无状态的协议,每次请求默认都是相互独立的。但是大部分情况下我们需要记录请求资源的用户信息,也就是保存会话,从而对资源的访问做限制,这是我们认证功能。常用的认…

arcgis将点的属性赋值给面

例子:将点的编号属性列赋值到对应的面属性

关于application title一直是untitled的问题

建立了一个cocoaapplication项目,在Interface Builder中修改了title,在运行时标题始终是“Untitled”。这是我在http://stackoverflow.com/questions/4720030/cocoa-mac-application-title-says-untitled上找的解决方法。I have created a document base…

python 中文apichm_python api 中文 chm

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

arcgis投影数据计算度分秒

原始数据投影坐标系 1.先将图层坐标改为地理坐标系 2.添加字段必须是文本类型,否则计算不出度分秒的形式,只显示十进制 错误示例(字段类型为双精度) 正确示例(字段类型为文本类型)

Js实现异步刷新(原创)

看了ajax的一些资料,稍微学到了一点东西,于是写出来与大家分享,由于读的资料比较少和自己的看法可能不全面,再加上自己的拙笔,如果不小心写错,还请大家 谅解 一.ajax理论叙述 ajax并不是一个新技术&#xf…

python压缩算法_LZ77压缩算法编码原理详解(结合图片和简单代码)

前言LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。原理介绍:首先介绍几个专…

ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析

ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, _start _start: b _start 编译的时候设置 RO 为 0x30000000&#xf…

arcgis裁剪后发现部分矢量缺失

解决办法 1.先修复几何 2.再进行裁剪 修复几何 修复的内容如下

SpringMVC上传文件以流方式判断类型附常用类型

此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 packagecom.tg.common.other;importcom.tg.common.tginterface.TG_FileUpload;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;import…

arcgis快速创建斜坡单元剖面线

本教程做出的剖面只能用作参考,实际工作中需要进行修改 一、数据: 1.斜坡单元 DEM 步骤 利用DEM做出坡向2.提取斜坡单元内部点数据 提取斜坡单元边界线数据 提取坡向数据至点属性 3.给带有剖面点的数据添加xy坐标字段,数据类型选择数值型 添…

ARM中的ldr指令与adr、ldr伪指令之间的区别

ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下: ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的地址。 adr和…

js解释器rhino查看执行环境

rhino是一个Mozilla的开源的由java写的javascript解释器。 文档地址 https://developer.mozilla.org/en/Rhino_documentation 安装方法 http://www.terminally-incoherent.com/blog/2008/01/08/rhino-scripting-java-with-javascript 安装。 ubuntu下直接 sudo apt-get insta…

mapgis转arcgis数据后发现属性表内没有数据

示例: 编辑点属性结构 将注释赋为属性

对python生态系统的认识_SAS,R与Python的区别详细对比

本文概述在本主题中, 我们将比较这三种语言的各个方面, 以使你对这些语言的市场价值和功能有清晰的认识, 以便你可以选择可以向前发展的语言。众所周知, 要学习数据分析, 可以使用三种重要的语言, 分别是Python, R和SAS。如果你是数据科学界的新手, 并且没有上述任何一种语言的…

ARM汇编ADR,LDR等伪指令

arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定…

分享50款非常漂亮的桌面壁纸

我喜欢根据季节更换桌面壁纸,换上一张清爽的桌面壁纸,心情也会变得舒畅。所以,今天我为大家收集了一批夏天壁纸,虽然夏天还未到来,不过这些壁纸真的非常漂亮,尽情欣赏吧。 (编译来源&#xff1a…

获取字段 命名空间和类_系统架构之命名规范

数据库设计规范表设计规范表名全部小写,单词间通过_间隔主键命名为id,类型为Long,长度为20位,非自增2. 外键及索引命名规范唯一索引:ux_表名_索引字段。如:ux_resource_code普通索引:ix_表名_索…

arcgis创建剖面线execl文件

如何快速创建剖面线,参考https://blog.csdn.net/qq_39397927/article/details/118730100 由于创建完的剖面线不带有野外编号,所以我们需要进行空间连接,因为斜坡单元转点后的数据是具有编号,所以进行空间连接将斜坡编号赋值给剖面…