【ARM64:ARM64架构】
ARM64:ARM64架构
- 1.ARMv8特色:
- 2.执行状态
- 3. ARMv8包含的寄存器
- 4.数据类型
- 5.异常模型
- 6.A64汇编指令介绍:
- 7.A64指令分类
ARM64通用的架构知识
1.ARMv8特色:
(1) 超大的物理地址空间(Large Physical Address),提供超过4GB物理内存的访问;
(2) 64位宽的虚拟地址空间(64-bit Virtual Addresing);
(3) 提供31个64位宽的通用寄存器,可以减少对栈的访问,从而提高性能;
(4) 提供16KB和64KB的页面,有助于降低TLB的未命中率(miss rate);
(5) 全新的异常处理模型,有助于降低操作系统和虚拟化的实现复杂度;
(6)全新的加载-获取,存储-释放指令(Load-Acquire, Store-Release Instructions)。专门为C++11,C11以及Java内存模型设计;
2.执行状态
AArch64: 64位的执行状态:
(1) 提供31个64位通用寄存器;
(2) 提供64位的程序计数器寄存器PC、栈指针寄存器SP以及异常链接寄存器;
(3) 提供A64指令集;
(4)定义ARMv8异常模型,支持4个异常等级,EL0~EL3;
(5)提供64位的内存模型;
(6)定义一组处理器状态(PSTATE)用来保存PE的状态;
AArch32: 32位的执行状态:
(1) 提供13个632位通用寄存器, 32位的程序计数寄存器PC、栈指针寄存器SP、链接寄存器;
(2) 提供A32,T32指令集;
(3)定义ARMv7异常模型,基于PE模式并映射到ARMv8的异常模型中;
(4)提供32位虚拟内存访问机制;
(5)定义一组处理器状态(PSTATE)用来保存PE的状态;
3. ARMv8包含的寄存器
ARMv8包含31个通用寄存器
AArch64运行状态支持31个通用寄存器X0~X30,AArch32状态支持16个32位通用寄存器;
X0~X30:通用寄存器;
SP: 栈指针寄存器;
PC:程序计数寄存器;
系统寄存器
系统寄存器提供控制和状态,在AArch64状态下,很多系统寄存器根据不同的异常等级提供不同的变种寄存器:
<reg_name>_ELx, x is 0,1,2, or 3
比如SP_EL0表示在EL0下的栈指针寄存器;
SIMD/FP寄存器:
支持128bit寄存器
特殊寄存器
XZE
4.数据类型
Byte: 8bit
Halfword: 16bit
Word: 32bit
Doubleworld: 64bit
Quadword: 128bit
5.异常模型
Exception Levels确定了处理器当前运行的特权级别,类似ARMv7架构中的特权等级
EL0: 用户特权,用于运行普通应用程序;
EL1: 系统特权,通常用于运行操作系统;
EL2: 运行虚拟化扩展的虚拟监控程序(Hypervisor);
EL3: 运行安全世界中的安全监控器(Secure Monitor);
异常级别 | 应用场景 | 安全世界 |
---|---|---|
EL0 | APP | Secure OS |
EL1 | Guest OS | sECURE OS |
EL2 | Hypervisor | Secure Hypervisor |
EL3 | Secure—> | –>monitor |
6.A64汇编指令介绍:
1.A64指令集只能运行在aarch64环境中;
2.所有的A64汇编指令都是32bit宽;
3.A64支持全部大写或小写书写方式;
4.寄存器命名,
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
Name | size | Encoding | Descriptio |
---|---|---|---|
Wn | 32bits | 0~30 | General-purpose register0~30 |
Xn | 64bit | 0~30 | General-purpose register0~30 |
WZR | 32bits | 31 | Zero register |
XZR | 64bit | 31 | Zero register |
WSP | 32bits | 31 | Current stack pointer |
SP | 64bit | 31 | Current stack pointer |
7.A64指令分类
内存加载和存储指令:
多字节内存加载和存储:
算术和移位指令:
位操作指令:
条件操作:
跳转指令:
独占访存指令:
内存屏障指令:
异常处理指令:
系统寄存器访问指令:
【ARM64:ARM64架构】相关推荐
- (五)Debian Linux中部署Spring Boot + Vue的前后端分离项目详细过程(arm64/aarch64架构下)
专题系列往期文章目录 (一)移动端安卓手机改造成linux服务器&Linux中安装软件踩坑历险记 (二)Debian Linux系统中安装oracle JDK1.8详细过程(arm64/aar ...
- 基于arm64鲲鹏架构的JupyterLab cpp环境安装(一)
基于arm64架构的JupyterLab cpp环境安装(一) 本文首发于林克的编程小记:前往查看 1. 安装conda环境 由于miniconda和anaconda官方没有arm64版本的,在git ...
- mips64el版本的oracle,腾讯QQ Linux版本正式回归 支持x64 ARM64 MIPS64架构
童年伴奏曲,国产跑步机十大品牌,丽江腊排骨火锅 [PConline资讯]10月24日消息 据腾讯QQ官方消息,腾讯QQLinux版本回归,支持x64.ARM64.MIPS64架构.资料显示,2008年 ...
- armv8/armv9/aarch64/arm64/A64/架构/IP你不知道的那些事
快速链接: .
- ARM64架构:为啥子刷icache之后要发IPI中断?
昨天在笨叔第一季VIP群里,有人问了一个很有意思和深度的问题: 这位同学问的问题,是关于Linux ARM64内核的flush_icache_range()函数,它是linux5.0/arch/arm ...
- .NET Core 服务在 ARM64 服务器中的部署
Linux 服务器 CPU 架构主要可分为:X86_64/AMD64.ARM64/AARCH64 两大类,大多情况使用的都是基于 AMD64 CPU 架构的服务器.但随着国产操作系统.CPU 等自主生 ...
- ARM64移动处理器解惑 iphone5s
"64位" 我们先来谈谈"64位"这个术语及其含义.大家对于这个术语一直比较困惑,很大一部分原因在于,它没有统一的.约定俗成的定义.然而,在大体上却达成了一些共 ...
- 苹果ARM64移动处理器
原文链接:http://www.mikeash.com/pyblog /friday-qa-2013-09-27-arm64-and-you.html "64位" 我们先来谈谈&q ...
- 基于 arm64 Linux nanosleep 系统调用流程分析
nanosleep (高分辨率睡眠)可实现纳秒级的睡眠,暂停调用线程的执行.在 Linux 内核中是如何实现的?下面基于 arm64 cpu 架构去分析. #include <time.h> ...
- Mac电脑使用:判断ARM64 or x64的方法
前言 随着操作系统和芯片技术的发展,现在下载软件是越来越麻烦,尤其是对于电脑操作系统不熟的人来说更是如此,使用Windows操作系统下载程序的时候大家都知道需要根据当前使用电脑的系统来选择是Windo ...
最新文章
- 用Auto-TensorCore代码生成优化matmul
- 在腾讯待了 9 年,还是离了职
- shell脚本自动化部署服务
- photoshop基础教程视频-贺叶铭-传智播客-笔记
- 神策 2020 数据驱动用户大会:新愿景 + 新定位 + 新舰队正式亮相!
- mysql 5.7.12 修改密码
- 软件开发工具--自考2018年10月程序填空
- 关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
- 程序员面试——C++工程师面试大全第一部分
- tabcontrol选项卡颜色把文字覆盖了_文字拆分神器,这3个PPT插件满足你的所有需求...
- 单词学习-Unit8Text3-1(15年7月29日,第8天)
- 马哥linux 2014,马哥linux内容分享之压缩和解压缩
- hdu5820 Lights
- Spread 常用属性
- 在线客服技术详解(理论)
- tiktok旋转验证码识别
- halcon19.11深度学习关于分类入门案例
- android 仿iphone多任务管理效果,别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多!...
- 银联手机网页如何调用云闪付(银联钱包)
- 一度智信:电商网店推广技巧分享