登录/注册

汇编指令 adr

更多

汇编指令 ADR 详解(中文)

作用
ADR 是一条伪指令,用于将标签(Label)的地址加载到目标寄存器中。它计算的是相对于当前程序计数器(PC)的偏移地址,而非绝对内存地址,因此常用于生成位置无关代码(PIC)。


语法格式

ADR{cond} Rd, label

关键特性

  1. 地址范围限制
    ADR 只能加载当前指令附近的标签地址(范围通常为 ±4095 字节)。若地址超出范围,汇编器会报错。

  2. 实现原理
    汇编器会将其转换为 ADDSUB 指令(基于 PC 相对寻址),例如:

    ADR R0, my_label   ; 可能被转换为:
                      ; ADD R0, PC, #offset  (如果 label 在后方)
                      ; SUB R0, PC, #offset  (如果 label 在前方)
  3. LDR 的区别

    • ADR 直接计算地址偏移(1条指令完成),不访问内存
    • LDR Rd, =label 可能生成多条指令,且可能访问内存中的地址池(literal pool)。

使用示例

    ADR R1, data_table  ; 将 data_table 的地址加载到 R1
    LDR R2, [R1]        ; 读取 data_table 处的数据

data_table:
    .word 0x12345678    ; 数据定义

典型应用场景


注意事项

  1. 范围限制:若标签距离过远,需改用 LDR Rd, =label
  2. 架构支持
    • 广泛支持于 ARM/Thumb 指令集(ARMv4 及以上)。
    • 在 x86 或 RISC-V 中无直接等价指令(类似功能通过 LEAAUIPC 实现)。

总结ADR 是一条高效获取局部标签地址的伪指令,适用于位置无关的小范围地址加载,是 ARM 汇编中优化代码的常用工具。

adr和ldr什么区别?

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

2024-05-17 06:27:29

汇编指令是什么 计算机语言汇编指令简介

汇编指令简介 汇编语言是计算机语言的一种,是一种低级语言。相比高级语言,汇编

2023-12-13 11:18:45

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

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

2023-11-08 12:34:22

MC9S08AC16汇编指令

MC9S08AC16汇编指令(显示屏电源板12v电容是哪个)-MC9S08AC16汇编

资料下载 名士流 2021-07-26 13:18:14

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

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

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

51单片机的汇编指令详细资料说明

本文档的主要内容详细介绍的是51单片机的汇编指令详细资料说明。

资料下载 佚名 2019-08-30 17:28:00

51单片机的汇编指令手册免费下载

本文档的主要内容详细介绍的是51单片机的汇编指令手册免费下载。

资料下载 佚名 2019-08-26 17:30:00

51单片机的汇编指令详细手册免费下载

本文档的主要内容详细介绍的是51单片机的汇编指令详细手册免费下载。

资料下载 刘满贵 2019-07-25 17:36:00

ARM汇编指令集分享

(汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。(

2022-04-06 10:41:15

浅谈汇编指令与伪指令

汇编的指令与伪指令指令是cpu机器

2021-12-20 07:58:06

什么是汇编指令?常用的汇编语句有哪些

指令和伪指令的本质区别是什么?什么是汇编指令?常用的

2021-11-29 06:21:20

常用的ARM汇编指令

第一次写博客,请各路大神多多关照。本人从事软件开发相关的工作,平时主要用c语言撸代码,前段时间因工作需要,接触到了ARM架构下的汇编指令,之前学过51单片机的

2021-07-01 11:06:12

汇编指令和DSP机器指令的关系是什么?

如图所示;C语言反汇编后的程序,想问的是 一条汇编语言就是一个指令吗?一条汇编

2020-08-19 08:09:16

ARM指令adr和ldr的用法区别

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

2020-06-20 10:20:38

汇编语言中常用的伪指令

汇编语言中除常用指令外,还有一些用来对“汇编”过程进行控制、或者对符号、标号赋值的指令

2019-11-11 10:03:19

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