
ARMv8-A架构
文章平均质量分 93
ARMv8-A架构基本原理、寄存器、指令、异常处理、Cache及内存管理
业余程序员plus
分享知识,传播开源精神,致敬郝斌老师!
展开
-
ARMv8-A寄存器介绍
4.ARMv8寄存器AArch64执行状态提供了31个64位通用寄存器,可以在所有异常级别中随时使用。每个寄存器的位宽都为64 bits,当使用全部64 bits时,称为X0-X30,当使用低32 bits时,称为W0-W30。AArch64过程(函数)调用使用X30寄存器保存返回地址,而异常的返回地址由ELR寄存器保存,而在AArch32中,过程调用和异常的返回地址都由LR寄存器保存。32位W寄存器使用对应64位X寄存器的低32位,即W0对应X0的低32位,W1对应X1的低32位,以此类推。读取W寄原创 2021-12-12 20:04:43 · 4417 阅读 · 2 评论 -
ARMv8汇编指令-adrp、adr、adr_l
1.概述在阅读Linux内核代码时,经常能碰到汇编代码,网上能查的资料千篇一律,大多都描述的很模糊。俗话说,实践是检验真理的唯一标准,我们就参考官方文档,自己写汇编代码并反汇编,探寻其中的奥妙。2.adrp在Linux内核启动代码primary_entry中,使用adrp指令获取Linux内核在内存中的起始页地址,页大小为4KB,由于内核启动的时候MMU还未打开,此时获取的Linux内核在内存中的起始页地址为物理地址。adrp通过当前PC地址的偏移地址计算目标地址,和实际的物理无关,因此属于位置无关码原创 2021-12-11 18:34:23 · 12969 阅读 · 6 评论 -
ARMv8-A Architecture Processors
1.ARMv8-AARMv8-A用于描述包含32位指令和64位指令执行状态的架构。ARMv8-A架构可以高效的处理位宽位为64的寄存器,同时保持兼容现存的ARNv7软件。下图是ARMv8架构的发展过程,从最早的v5架构(支持VFPv2),经过v6架构(支持Thumb-2,TrustZone,SIMD)和v7架构(VFPv3/v4,NEON),最终推出了v8架构。v8架构是ARM推出的第一个支持64位指令的架构,兼容早期v7架构的关键特性,拥有AArch32(执行32位指令)和AArch64(执行64位指令原创 2021-06-05 16:34:25 · 1409 阅读 · 2 评论