ARM LDR和ADR指令
讲的比较好的一篇帖子,ADR和LDR区别的比较清除:
LDR和ADR的区别
Load/Store指令
ARM属于RISC指令集,CPU无法对内存的数据进行直接操作,只能通过Load/Store指令来实现:当我们需要对内存中的数据进行操作时,首先将这个数据从内存中加载到寄存器,在寄存器中进行数据处理,最后将结果重新存储到内存中。使用指令:
LDR X1,[X0] //将x0的值作为地址,将该地址的数据保存到寄存器x1LDR X1,LOOP //将LOOP地址上的数据送给X1STR X1,[X0] //将x0的值作为地址,把X1寄存器的值存储到这个地址
ARM伪指令
常见的伪指令有:ADR、LDR、NOP,他们的用法:
ADR X0,LOOP //将标号LOOP的地址保存在X0中
LDR X0,=0x08000000 //将内存地址0x08000000赋值给x0
NOP //空操作=mov x0,x0
LDR伪指令
LDR伪指令的操作数前一般会有一个"="来表示这是一个伪指令,常用来传送比较长的数据,比如向X0传送64位地址。LDR伪指令在编译器处理时翻译成标准的汇编指令LDR + 文字池的形式。如:
LDR X0,=0x08030000
//被编译器翻译成:
LDR X0,[PC,#OFFSET]
。。。。。。。。。。。
DCD 0x08030000
编译器会自动为0x08030000分配到文字池中,然后计算出LDR伪指令到文字池数据的偏移,然后利用相对寻址传送到x0中。
ADR伪指令
ADR伪指令和LDR伪指令相似,都是加载一个地址到寄存器。不同的是ADR伪指令通常被编译器翻译成ADD指令,如:
ADR X0,LOOP
..........
LOOP:B LOOP
//被编译器翻译成:
OFFSET=LOOP-(PC-8)
ADD X0,PC,#OFFSET
编译器先计算出ADR到LOOP的编译,然后使用ADD指令把地址传送到X0。
ADR伪指令和LDR伪指令的使用区别:
- LDR伪指令主要来操作外部设备寄存器;而ADR主要通过相对寻址,生成与位置无关的代码,只要标号的位置不变,就可以与位置无关。
- LDR伪指令使用绝对寻址,ADR伪指令使用相对寻址。
- LDR伪指令使用的地址范围【0-32GB】,ADR伪指令要求当前指令和标号必须在同一个段中,地址编译范围较小。
ARM LDR和ADR指令相关推荐
- ARM指令 LDR 和 ADR的一些区别
LDR 是ARM中的指令,也是伪指令. 当用 LDR r, =imd // r 为寄存器, imd为立即数 LDR 是一条伪指令.编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn ...
- arm汇编指令:ldr和adr的区别
在分析uboot源码时,遇到adr.ldr指令,却分不清这2者的区别,网上很多解释含糊不清,现对adr与ldr指令做解释. 首先给出一段汇编代码: ldr r0, _startadr r0, _sta ...
- ARM汇编:加载和存储指令集(六大类)---LDR(ADR)、LDRB、LDRH、STR、STRB、STRH
ARM的六大类指令集---LDR.LDRB.LDRH.STR.STRB.STRH ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则 ...
- ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
ARM汇编有ldr指令以及ldr.adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别. ldr r0, _start adr r0, _start ...
- 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)
首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...
- ldr和adr在使用标号表达式作为操作数的区别
ARM汇编有ldr指令以及ldr.adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别. ldr r0, _start adr r ...
- ARM中的---汇编指令
ARM中的---汇编指令 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 ...
- ARM中跳转指令BL/BLX偏移值计算规则
源文地址:http://www.cnblogs.com/Reyzal/p/4857948.html 1. 4字节对齐arm指令 规则:偏移=( 跳转地址-(指令地址+8) )/4 原因: 指令地址 + ...
- 01 ARM体系结构与汇编指令
注:本文章是由笔者学习朱有鹏arm的学习笔记,特此感谢朱老师. 关于汇编: 1.汇编的实质是机器指令(机器码)的 助记符,是一款CPU的本质特征. 2.不同CPU的机器指令集设计不同,因此 汇编程序不 ...
最新文章
- 影院平台搭建 - (2)FLV发布系统的简单搭建
- HDU 1873 看病要排队(结构体+优先队列)
- windowsxp的自动更新关闭后怎么能不提示?
- b树的阶数如何确定_通过一个示例来聊聊如何规划一个PLC项目
- 二级c语言笔试需要带笔吗,考计算机二级需要准备什么
- 例解 autoconf 和 automake 生成 Makefile 文件[转+个人修改]
- 一不小心,老司机又翻车了
- Graphviz样例之有向图
- 蓝牙CC2540 CC2541常用AT指令集
- 国产电影凭什么霸屏电影院?
- 笔记本电脑触摸板手势命令
- DSL是什么意思?Mbps是什么意思?
- Hive3详细教程(四)beeline的使用
- Java导出Excel(Poi详解)
- Mysql系列003:sql必知必会(面试必备)
- 网页技巧-网页的版式设计---版式的基本类型
- 工业品销售,如何才能轻松赢得订单!
- 如何区分客户端是手机端还是PC端
- mysql之视图、索引
- vue横屏分页加载 vue 分页 左右滑动分页 横着分页