登录/注册

arm adr指令

更多

在ARM汇编中,ADR(Address Relative)指令是一个伪指令,作用是将一个与PC(程序计数器)相关的地址加载到目标寄存器中。以下是详细解释:

核心特点:

  1. 位置无关(PIC)
    ADR生成的地址是相对于当前PC的偏移量,因此代码无论加载到内存哪个位置都能正确执行(常用于动态链接库、可重定位代码)。

  2. 地址计算方式
    汇编器将ADR转换为等效的ADD Rd, PC, #offsetSUB Rd, PC, #offset指令(偏移量范围通常为±4095字节)。

  3. 伪指令
    ADR本身不是CPU的直接指令,而是由汇编器转换成一条或多条实际指令(如ADD/SUB)。


语法:

ADR{cond} Rd, label

示例:

_start:
    ADR   R1, message   ; 将message地址加载到R1
    BX    LR            ; 返回

message:
    .asciz "Hello, World!"  ; 字符串数据

?️ 与LDR的区别:

指令 用途 地址范围 代码体积
ADR 加载附近地址(PC相对) ±4KB ⭐短(1条指令)
LDR Rd,=label 加载任意绝对地址 任意32位地址 ⭐⭐⭐长(需内存读取)

ADRL:如果需要加载超出±4KB的地址,可使用ADRL伪指令(转换为2条指令)。


关键场景:

注意:

若目标地址超出范围,汇编器会报错(Error: invalid constant ... after fixup)。此时应改用LDR Rd, =label

ADR1001 adi

电子发烧友网为你提供ADI(ADI)ADR1001相关产品参数、数据手册,更有ADR1001的引脚图、接线图、封装手册、中文资料、英文资料,ADR

2025-03-12 18:55:06

adr和ldr什么区别?

adr 和ldr什么区别 还有为啥arm 汇编能反汇编不都已经是汇编了?

2024-05-17 06:27:29

讲讲ARM指令集格式以及常用的ARM汇编指令

对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的

2023-11-08 12:34:22

ADR3525/ADR3530/ADR3533/ADR3540/ADR3550:微功耗、高精度基准电压表

ADR3525/ADR3530/ADR3533/ADR3540/

资料下载 李伟 2021-05-13 20:45:52

ARM汇编指令(6)——批量数据加载/存储指令资料下载

电子发烧友网为你提供ARM汇编指令(6)——批量数据加载/存储指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文

资料下载 h1654155275.3301 2021-04-23 08:46:23

一文读懂ARM微处理器指令系统

一文叫你如何读懂ARM微处理器指令系统。

资料下载 姚小熊27 2021-03-26 14:30:58

ARM处理器的寻址方式和指令集介绍

ARM处理器是基于精简指令集计算机(RISC原理设计的,指令集和相关峄码机制较为简单。

资料下载 佚名 2020-11-24 17:24:00

ARM MOV和LDR的指令关系是怎么样的

ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令比如想把数据从内存中某处读取到寄存器中,只能

资料下载 佚名 2019-05-16 18:05:00

ADR3625/ADR3630/ADR3650: Precision, Micropower, High Current Output Voltage References Data Sheet ADR3625/ADR3630/ADR3650: Precision, Microp

电子发烧友网为你提供ADI(ADI)ADR3625/ADR3630/ADR3650: Precision, Micropower, High C

2023-10-12 18:46:26

请问一下ARM指令和伪指令的区别在哪呢

对齐填充.equ @ 类似于C中宏定义重要的几个伪指令:ldr 大范围的地址加载指令adr 小范围的地址加载

2022-05-17 09:51:52

一文详解Arm Cortex-M处理器指令

Arm处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单,具有32位

2022-05-17 09:31:25

ARM汇编指令集分享

)0x0000_0014: 下一条数据.arm / .code32 声明以下的代码是ARM指令.thumb /.code16 声明以下的代码是t

2022-04-06 10:41:15

ARM处理区的存储访问指令有哪些呢

(2)(3)中介绍了ARM处理区的存储访问指令,数据处理指令,分支指令,

2021-12-20 07:59:22

ARM指令adr和ldr的用法区别

同学们在学习ARM指令时,多数都会对adr和ldr这两个命令产生疑惑,那他们究竟有什么区别呢?

2020-06-20 10:20:38

ARM架构及ARM指令集 Thumb指令集你了解多少?

ARM架构及ARM指令集、Thumb指令集你了解多少?

2020-02-26 16:09:01

7天热门专题 换一换
相关标签