汇编之伪指令

文章目录

  • 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
相关推荐
水饺编程1 天前
第2章:Linux 基础,解压缩【.tar.bz2】压缩包文件
linux·c语言·汇编
Zevalin爱灰灰1 天前
Linux入门第二部分(ARM裸机篇) 第二章 Cortex-A7 MPCore架构与ARM汇编基础
linux·汇编·arm开发·嵌入式
Zevalin爱灰灰1 天前
Linux入门第二部分(ARM裸机篇) 第三章 汇编LED驱动实验
linux·汇编·arm开发
水饺编程2 天前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
小向是个Der4 天前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
二十七日秋4 天前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
银河麒麟操作系统4 天前
两案例入选全球计算联盟年度产业应用案例汇编
大数据·汇编·人工智能
abc light4 天前
ARM 裸机开发(2)——ARM 汇编与启动代码
汇编·arm开发
soso19685 天前
Modbus协议开发实战指南
汇编
水饺编程6 天前
第2章:Linux 基础,解压缩【.tar.gz】压缩包
linux·c语言·汇编