ARM汇编详细

什么是ARM?

ARM称为 进阶精简指令集,是一个32位精简指令集(RISC)处理架构
image-20220325142159457.png

到ARMv7后 更具处理器分了三种不同的场景(A,M,R),三个应用领域不一样他们所处理的指令集,速度。

A是顶级主控,是PC、平板、手机 ,要求互动性高 功能复杂的,一般使用A系列处理器

M是中级,像是传感器,只做信息收集,不做处理,根据要求传到云端服务

R是要求实时高性能处理器,例如硬盘控制

ARM大小端

最高有效位 MSB对应大端(Big-endian)

最低有效位 LSB对应小端(Little-endian)

armel:arm eabi little endian的缩写,软件浮点

armhf:arm hard float的缩写, 硬件浮点

arm64: 64位的arm默认就是hf的,因此不需要hf的后缀

ARM基础(*)

ARM处理器的运行模式(ARM有九种模式,这里列举7种)

1.用户模式(USR) —>ARM处理器正常程序执行状态

ARM应用程序所启动或运行时都在用户模式

2.快速中断模式(FIQ)—>高速数据传输或通道处理

大量数据中断产生的

3.外部中断模式(IRQ)—>通用中断处理

调用或切换模式,输入量少的可以使用通用中断

4.管理模式(SVC)—>操作系统所使用的保护模式

相当于超级管理员,能做很多事,但是主要是管理调用,指令等

5.数据访问终止模式(ABT)—>当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护

6.系统模式(SYS)—>运行具有特权的操作系统任务

自己系统异常的时候会产生的一种模式

7.未定义指令终止模式(UND)—>未定义的指令执行是进入该模式

如果指令无法识别,机器就会给一些信息

不同模式下对应Number图

image-20220325144849801.png

ARM的工作状态

模式是使用的过程中,产生的一些问题所达到的不同情况

状态是ARM状态还是Tumb状态

Tumb状态:16位,执行半字对准的Thumb指令

ARM状态:32位,执行全字节对准的Arm指令

进入不同工作方式的方法

1.进入Thumb状态

(1)执行BX指令,并设置操作数寄存器状态(位[0])为1

(2)在Thumb状态进入异常(所有的异常都是ARM状态,当异常处理返回时自动转换Thumb指令)

所有指令将以16位处理

2.进入ARM状态

(1)执行BX指令,并设置操作数寄存器的状态(位[0)为0

(2)进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态

ARM工作太寄存器

image-20220325150001190.png
image-20220325150105492.png

Thumb状态于ARM状态寄存器

image-20220325150339640.png

ARM流水线

1.CPU流水线,把一条指令分为多个处理阶段
2.ARM使用三级流水线,加速指令处理速度
3.ARM的三级流水分别是:取址( fetch),译码(decode),执行( execute)。PC指向fetch的指令

ARMv7

主要有三条流水线:取址(取得了某个地址),(转换成代码或01)译码,执行
image-20220325150614221.png
ARM V9

取地,译码,执行,内存,写回

他把执行进行进一步区分,是对MEMORY内存进行访问还是什么其他操作。写回:写入到寄存器里面还是在内存中

image-20220325150759648.png