汇编之伪指令

文章目录

  • NOP伪指令

  • ADR伪指令

  • ADRL伪指令

  • LDR伪指令

  • ARM中伪指令并不是真正的汇编指令(cpu不认识),但这些伪指令在汇编编译器对源程序进行汇编处理时被替换成对应的一条或多条汇编指令。用于简化汇编编码工作

  • ARM中的汇编伪指令包括ADR、ADRL、LDR和NOP

NOP伪指令

  • NOP伪指令在汇编时将会被代替成ARM中的空操作,比如可能是"MOV R0,R0"指令等。NOP可用于延时操作

ADR伪指令

  • 小范围地址读取伪指令
z80 复制代码
adr{cond} register, expr
  • 作用:将基于PC的地址值读取到寄存器中。获得expr表达式对应代码在内存中的运行位置

ADRL伪指令

  • 中等范围地址读取伪指令。相较于ADR伪指令,可以读取更大范围的地址
  • 一般ADR伪指令读取范围为-10201020,而ADRL伪指令读取范围为-256K256K
  • ADRL伪指令在汇编时会被编译器替换成两条汇编指令

LDR伪指令

  • 大范围地址读取伪指令。它可以将一个32bit的常数或者一个地址值读取到寄存器中
  • 表现形式有两种,对应的用途也是两种
    • 第一种形式: 带 '=', 可以将非法的立即数放入寄存器
z80 复制代码
@语法格式
LDR{cond} register, = expr | label_expr
z80 复制代码
.text
.global _start

_start:
  mov r0, #10
  ldr r1, =0x1ff
  b .
.end
复制代码
- 第二种形式: 不带'=', 将标号代表的内存中的数据放入寄存器
z80 复制代码
LDR{cond} register, label_expr
z80 复制代码
.text
.global _start
_start:
  mov r0, #10
  ldr r1, =0x1ff
  ldr r2, test
  mov r3, #20
  b .
test:
  .word 0x12345678
.end
相关推荐
水饺编程12 小时前
第2章:Linux 基础,pwd 命令
linux·c语言·汇编
半杯咖啡半行码1 天前
STM32之ARM通用汇编指令详解:从指令格式到寻址方式
汇编·arm开发·stm32
Seeing51 天前
音乐111111
汇编
Funlang1 天前
从汇编到Fun语言
汇编
l1t2 天前
DeepSeek总结的有符号、无符号、未对齐:从汇编到 SQL 的教训
汇编·数据库·sql
Hi202402177 天前
同一个 NMS 算子,两种语言实现:CUDA C 与 Rust 生成 LLVM IR 和 Vortex 汇编的差异
c语言·汇编·rust·gpgpu·vortex·cudac
lhbweilai7 天前
深挖FreeRTOS内核实现(二)
c语言·汇编·stm32·单片机
水饺编程8 天前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio
水饺编程8 天前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
水饺编程9 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu