ARM汇编详细
什么是ARM?
ARM称为 进阶精简指令集,是一个32位精简指令集(RISC)处理架构
到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图
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工作太寄存器
Thumb状态于ARM状态寄存器
ARM流水线
1.CPU流水线,把一条指令分为多个处理阶段
2.ARM使用三级流水线,加速指令处理速度
3.ARM的三级流水分别是:取址( fetch),译码(decode),执行( execute)。PC指向fetch的指令
ARMv7
主要有三条流水线:取址(取得了某个地址),(转换成代码或01)译码,执行
ARM V9
取地,译码,执行,内存,写回
他把执行进行进一步区分,是对MEMORY内存进行访问还是什么其他操作。写回:写入到寄存器里面还是在内存中