ARM体系结构与接口技术-day05

ARM 汇编基础与指令集笔记

在嵌入式开发领域,ARM 汇编是与硬件交互的核心语言之一。了解 ARM 汇编中的符号分类、指令集,以及简单的汇编程序结构,是深入学习 ARM 架构开发的基础。

一、ARM 汇编中的符号

ARM 汇编里有三类关键符号,它们在编译和程序执行过程中扮演不同角色:

  • 指令:能编译生成一条 32 位的机器码,并且可被 CPU 识别和执行,是直接控制硬件操作的 “命令”。
  • 伪指令:本身并非真正的指令,但编译器可将其替换成若干条实际指令,起到简化编程、提高代码可读性的作用。
  • 伪操作:不会生成指令,仅在编译阶段向编译器传达编译规则,比如告诉编译器如何组织代码段、数据段等。

二、ARM 指令集分类

ARM 指令集包含多种类型,以满足不同的操作需求:

  • 数据处理指令:主要用于进行数学运算(如加、减、乘、除)和逻辑运算(如与、或、非、异或)。
  • 跳转指令:实现程序的跳转功能,本质是修改程序计数器(PC)的值,让程序执行流跳转到指定位置。
  • Load/Store 指令:用于访问(读写)内存,实现数据在寄存器和内存之间的传输。
  • 状态寄存器传送指令:专门用于访问(读写)CPSR(当前程序状态寄存器),可对程序的运行状态进行设置和查询。
  • 软中断指令:用于触发软中断,常被用于实现系统调用等功能,在用户态与内核态之间进行切换。
  • 协处理器指令:用于操作协处理器,协处理器可协助主 CPU 完成特定任务,如浮点运算、加密解密等。

三、简单 ARM 汇编程序解析

以下是一段简单的 ARM 汇编程序,可帮助理解汇编程序的基本结构:

@ 表示当前段为代码段
.text
@ 声明 _start 为全局符号,使其能被链接器识别
.global _start
@ 汇编程序的入口,程序从这里开始执行
_start:
    @ 将立即数 1 传送到寄存器 R1 中
    MOV R1, #1
@ 死循环标签,用于防止程序跑飞
stop:
    @ 跳转到 stop 标签处,形成死循环
    B stop
  • .text:表明当前段为代码段,编译器会将后续的指令代码放置在代码段对应的内存区域。
  • .global _start:声明_start为全局符号,这样链接器在链接程序时能找到程序的入口点。
  • _start::是汇编程序的入口,程序执行时首先从这里开始。
  • MOV R1, #1:这是一条数据处理指令,功能是将立即数1传送到寄存器R1中。
  • stop::是一个标签,用于标识死循环的位置。
  • B stop:这是一条跳转指令,会跳转到stop标签所在的位置,由于之后没有其他指令,所以会形成死循环,防止程序在执行完有限指令后 “跑飞”(即执行到不可预测的内存区域)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值