首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AArch64 是什么

同时也需要在 ARMv8 架构中引入新的 AArch64 执行状态。AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。...更重要的是, AArch64 作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的 AArch32 执行状态。...虽然最初的 64 位 ARM 处理器将会完全向后兼容,但我们大胆且前瞻性地将 AArch64 作为在 ARMv8 处理器中唯一的执行状态。...这样回想起来, AArch64 作为在 Fedora ARM 项目中被支持的 ARM 构架是一个很自然的过程: armv5tel、armv7hl、aarch64。...新的架构被命名为:aarch64,这同 ARM 自己选择的主线命名方式保持一致,同时也考虑到了 ARM 架构名与 ARM 商标分开的期望。

2.8K60
您找到你想要的搜索结果了吗?
是的
没有找到

AArch64 学习(二) 函数调用 (Function Call Convention)

本系列的第一篇 中介绍了 AArch64 的基础指令、进程内存布局以及基础栈操作 等. 本文该系列的第二篇, 主要聊聊函数调用, 涉及到的就是 Function Call Convention....AArch64 提供给我们了一个 bl (branch with link) 指令, 用来执行指定的函数....AArch64 Call Convention 约定 把需要保存的寄存器值入栈, 避免被即将调用的函数修改 AArch64 中, X0-X7 8 个通用寄存器用来保存函数调用的前 8 个参数, 超过 8...add(long x, long y) { return x + y; } int main() { long z = add(1, 2); return 0; } 对应的 AArch64...main() { long z = test(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); return 0; } 我们先看一下函数调用的时候, 栈的分配, 下面是对应的 AArch64

90730

深入理解Aarch64的内存管理

地址空间 AArch64 中有几个独立的虚拟地址空间。...物理地址 除了多个虚拟地址空间,AArch64 还有多个物理地址空间(PAS): Non-secure PAS0 Secure PAS Realm PAS (Armv9-A only) Root PAS...下图展示了多个物理地址空间的映射关系: 地址大小 AArch64 是 64 位架构,但这并不意味着所有地址都是 64 位的。虚拟地址以 64 位格式存储。...下图显示了 AArch64 中虚拟地址空间的布局: 如左图所示,EL0/EL1的虚拟地址空间有两个区域:内核空间和用户空间。内核空间在顶部,用户空间在底部。内核空间和用户空间有各自单独的转换表。...AArch64 支持三种不同的粒度大小:4KB、16KB 和 64KB。 处理器支持的粒度是自定义的并由 ID_AA64MMFR0_EL1 保存。

1.2K20

AArch64 学习(一) 基础指令, 内存布局, 以及基础栈操作

那我们见到的 AArch64 是什么呢?...其实它和 AArch32 被称为 “执行状态” (execution state), 那么我们可以说 ARMv8-A 同时支持 AArch32 和 AArch64 两种状态, 在 AArch64 状态下...这里要注意 ARMv7/ARMv8-A、AArch32/AArch64 以及 A32/A64 在概念上的的区别, 但很多时候, 描述的范围都挺笼统的, 有些也是可以互相指代的, 大家知道就好....这个系列也是本着这个初衷展开, 适合对 AArch64 不熟, 或者熟悉 x86/64 的汇编, 想了解 AArch64 的同学. 而且对 C/C++ 语法或者特性背后实现感兴趣的同学....我们总结一下, 其实也很简单, 记住下面几个就够了: 每个函数内的栈空间大小, 在编译期就已经确定 通过 sub sp, #size, 就是减小 sp 地址的方式分配栈内存, 分配 size 字节. ps: AArch64

1.9K30
领券