一篇文章读懂Armv8 AArch64
2018-02-25 本文已影响98人
赵国开
Armv8是Armv7之后的一个重要架构更新。其中一个主要的变化是引入了64的架构,即AArch64。AArch64状态只有在Armv8架构中才有。而且在AArch64状态下执行的代码只能使用A64指令集。当然ARM为了维持整个生态参与者的利益,Armv8还是保持与现有32位体系结构兼容性的AArch32,即Armv8之前的Armv7配置文件定义的那套设计规范。AArch32今天不会进行具体介绍,今天的重点是AArch64,但是不管怎么变最本质的规则是不会变的,ARM对所有硬件资源的操作,都抽象成对寄存器的操作,寄存器隐藏了硬件的具体操作细节提供配置的接口,硬件处理器拿着这些配置负责具体的执行。下面具体看一下在AArch64状态的一些主要技术细节:
1 AArch64状态下的寄存器
![](https://img.haomeiwen.com/i9347150/57f4400ab5cd2341.jpg)
2 异常级别
![](https://img.haomeiwen.com/i9347150/d9088a3f5993c0c6.jpg)
3 链接寄存器
![](https://img.haomeiwen.com/i9347150/cb9bdce0b1939cf7.jpg)
4 堆栈指针寄存器
![](https://img.haomeiwen.com/i9347150/d33de2504e9f1360.jpg)
5 预留的核心寄存器名字
![](https://img.haomeiwen.com/i9347150/b9b4fa6ff83f0254.jpg)
6 预留的扩展的寄存器名字
![](https://img.haomeiwen.com/i9347150/e16d94715de62f62.jpg)
7 程序计数器
![](https://img.haomeiwen.com/i9347150/f88abe548a860ba5.jpg)
8 带条件的执行
![](https://img.haomeiwen.com/i9347150/1422086ea9a20369.jpg)
9 Q标志
![](https://img.haomeiwen.com/i9347150/5389776a997f2bcf.jpg)
10 进程状态
![](https://img.haomeiwen.com/i9347150/6eb0d992972791ce.jpg)
11 保存的程序状态寄存器(SPSR)
![](https://img.haomeiwen.com/i9347150/e2799b5262c91c5d.jpg)
12 A64指令集
![](https://img.haomeiwen.com/i9347150/87ed59b7e22cdd08.jpg)
参考资料
DUI0801I_armasm_user_guide