登录/注册

adrl伪指令

更多

在 ARM 汇编语言中,ADRL 是一条伪指令,用于将符号的地址加载到寄存器中。以下是详细解释:


作用与功能


语法格式

ADRL{cond} Rd, symbol

典型用途

    ADRL R0, buffer      ; 将 buffer 的地址加载到 R0
    LDR R1, [R0]         ; 读取 buffer 的值

buffer:
    .word 0x12345678     ; 数据定义

底层实现原理

汇编器会将 ADRL 拆解为 两条数据处理指令(通常是 ADDSUB),组合计算目标地址。例如:

ADRL R0, buffer
; 可能被汇编器替换为:
ADD R0, PC, #offset_low  ; 低偏移部分
ADD R0, R0, #offset_high << 12 ; 高偏移部分(带移位)

重要注意事项

  1. 范围限制

    • ADR:支持 ±4KB 的地址偏移。
    • ADRL:支持 ±64KB 的地址偏移(具体范围因汇编器/架构版本而异)。
  2. 位置无关代码(PIC)

    • 因基于 PC 相对寻址,ADRL 生成的代码是位置无关的,适用于动态链接库或可重定位代码。
  3. 平台支持

    • ADRLARM 模式(32 位) 下可用。
    • AArch64(ARM64) 中已弃用,改用 ADRADRP(支持更大范围寻址)。
  4. 伪指令本质

    • ADRL 不是 ARM 硬件的原生指令,汇编器将其翻译为等效的机器指令序列。

示例场景

    .text
_start:
    ADRL R0, .          ; 加载当前指令地址到 R0
    ADRL R1, _start     ; 加载 _start 标签地址到 R1
    BX LR

总结

ADRL 是 ARM 汇编中用于加载中远距离地址的便捷伪指令,通过组合指令实现地址计算,适用于编写与位置无关的高效代码。使用时需注意其地址范围限制,并在 AArch64 架构下迁移至 ADRP + ADD 的组合方案。

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

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

2022-05-17 09:51:52

探讨一下ARM架构下的GNU汇编程序伪指令

所有的GNU汇编程序伪指令都以句号(.)打头,后面接上伪指令的名字,通常是由小写字母组成。不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇

2022-04-22 10:04:37

浅谈汇编指令伪指令

汇编的指令与伪指令指令是cpu机器指令的助记符,通过编译会得到机器码

2021-12-20 07:58:06

ARM汇编伪指令详解

我们做一些操作会有一点麻烦,比方进行一个if then的判断操作。比如要比较a>b,则去调用某个函数,这就要先去比较a,b的值,然后就会跳转,跳转又会比较大小,less than,就是BLLT,然后跳转到loop,我们通过这些来实现if then的操作。循环,先定义一个loop,然后有一些语句跳转到这个语句,然后进行条件判断跳出,然后又进行if then的方

资料下载 刘洋 2022-02-11 14:12:18

51单片机 笔记(二)指令系统汇总

3.4.3 乘法3.4.4 除法3.4.5 十进制调整指令3.5 逻辑操作指令3.6 控制转移指令3.7 位操作

资料下载 84784 2021-11-23 16:19:14

第3章:TMS320C24x寻址方式和指令系统PPT下载

第3章:TMS320C24x寻址方式和指令系统PPT下载

资料下载 hlly向山举目 2021-10-08 14:44:33

详解ARM常用的伪指令资料下载

电子发烧友网为你提供详解ARM常用的伪指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。

资料下载 KANA 2021-04-11 08:54:42

PLC实例讲解之加法指令写流水灯资源下载

PLC实例讲解之加法指令写流水灯资源下载

资料下载 佚名 2021-04-01 16:49:50

伪指令有哪几个特点呢

文章目录一.伪指令1.AREA2.EQU3.SPACE4.PRESERVE85.DCD6.BLX7.BX一.伪指令伪指令(Pseudo Inst

2021-12-20 07:22:59

ARM汇编指令集与伪指令说明

嵌入式知识-学习笔记(2):ARM汇编指令集与伪指令首先说明一下指令和伪指令

2021-12-14 06:50:36

伪指令指令之间的差别是什么?

伪指令和指令之间的差别是什么?arm汇编指令的特点是什么?

2021-11-29 07:28:51

C语言的变量和汇编中的伪指令是什么

微机原理中表明 变量用伪指令DW,DB单片机中的伪指令EQUC语言中的变量来源与汇编的伪指令

2021-07-15 06:18:03

介绍12个ARM常用的伪指令

1、 AREAAREA 伪指令用于定义一个代码段或数据段。 语法格式: AREA 段名 属性 1 ,属性 2 ,…… 其中,段名若以数字开头,则该段名需用 “ | ” 括起来,如 |1_test

2020-10-18 09:14:59

汇编语言中常用的伪指令

汇编语言中除常用指令外,还有一些用来对“汇编”过程进行控制、或者对符号、标号赋值的指令。在汇编过程中,这些指令不被翻译成机器码,因此称为“

2019-11-11 10:03:19

adr adrl ldr mov总结整理

伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。 使用的格式:ADRL register,exper。 在编译源程序时,汇编器会用两条合适的指令

2019-04-26 07:45:44
7天热门专题 换一换
相关标签