首页 > 编程知识 正文

arm汇编教程,下载armv7还是armv8

时间:2023-05-06 21:29:26 阅读:130465 作者:3520

ARMv8是ARM版本升级以来最大的变化,ARMv8的体系结构继承了传统ARMv7和早期处理器技术的基础,除了现有的16/32位Thumb2指令支持之外,还提供了现有的a32 (arm 32位)指令集

ARMv8有两种“运行模式”。

a arch 64:64-bitregistersandmemoryaccesses,new instruction set;

a arch 32:backwardscompatiblewitharmv7- a;

(一)A64新的指令和寄存器

固定大小为32位的操作码,清除基于5位寄存器描述符的解码表; 可以具有32比特或64比特参数; 地址设置为64位,主要针对LP64和LLP64数据模型; 拥有比AArch32更少的条件命令。 条件指令可以是分支、比较、选择; 无LDM/STM (内存批量读取或写入数据)指令,增加LDP/STP指令进行操作,降低复杂度和功耗; 支持高级单指令数据(SIMD )和(FP浮点)的加密技术支持; 可以随时访问31个通用64位寄存器(X0-X30 ),没有banked )与banked的寄存器在不同模式下对应不同的物理地址)、堆栈指针(SP )和PC是通用寄存器在使用CPSR保存当前处理执行状态的状态中,AArch64定义用于保存处理元素(PE )状态的一系列PSTATE寄存器;AArch64 Unbanked Registers:

左侧的通用寄存器用于32位或64位整数运算或64位寻址,右侧的寄存器用于浮点运算。

AArch64 Banked Registers:

答AArch64以与以前不同的模式区分绑定寄存器,而是执行级别;

下图表示AArch32和AArch64的通用寄存器的对应关系。

(二)AArch64 Exception Model

a arch 64执行模型:

exceptionmodelnomenclature :

共分为4个4 exception levels: EL3-EL0。 在此特权模式下,EL0位权限的最低模式(用户模式,监视器(el3 )和supervisor ) EL2 )分别用于安全扩展和虚拟化扩展。 从低级到高级的切换是以exception方式转换的,包括:

Interrupts,page faults etc.svcfortransitiontoel1(系统呼叫) hvcfortransitiontoel2(hypervisor :超级主管calls ) )。 smcfortransitiontoel3(securemonitorcall ) dedicatedelrregisterforthereturnaddress (bankedateachel ); 从高电平level到低电平level是ERET命令;

低电平level寄存器位宽为高电平level:e.g.no64-bitel0with 32-bitel 1;

对异常的处理:

1.exceptionlinkregisterwrittenonexceptionentry;

exception level、EL1、EL2、and EL3有不同的向量地址,在以前的arm版本中只有一个向量地址;

3 .向量区分为: exceptiontype(synchronous,IRQ,FIQ or System Error )或exception origin (sameorlowerexceptionlevel ) and registion

4. Syndrome寄存器提供exceptions信息;

AArch32 and AArch64之间切换

AArch32和AArch64之间的切换只能通过发生异常或系统Reset来实现,A32 - T32之间通过BX指令来切换。

不同级别之间的组合:

AArch32 /AArch64 relationship

changesbetweenaarch 32 anda arch 64 occuronexception/exceptionreturnonly; allowsaarch 32应用程序软件64操作系统密钥; allowsaarch 32 guestosunderaarch 64虚拟机管理程序; allowsaarch 32安全sidewithaarch 64 non-secureside http://www.Sina.com /

在arm V8 64位出现之前,每个地址单位使用与存储器1字节单位(b )对应的32位地址,所以最大地址范围为2^32B=4GB,但实际上,存储设备远远超过4GB的存储器区域以前用LPAE (大物理地址扩展)实现地址扩展,最多可以支持2^40个地址。ARMv8理论上最多可以提供2^64个虚拟地址,但可以提供16个16exabyte(2^4*2^60 )

在arm 32位中,用户空间进程所在的Page Table (即0xC0000000以下的存储空间)、Kernel Space所在的Page Table (即0xC0000000以上的存储空间)

在arm V8 64位体系结构中,EL1的TTBR0(TTBR0_EL1,in /arch/arm64/mm/proc ) .存储用户空间击所在的页表和EL1

arm 64位密钥分页大小有4kb和64kb两种,因此可以通过设置task _ size _ 64 (/arch/arm 64/include/ASM/memory.h )进行设置和分页如果是大小为2^39的Task空间(=512GB )且分页大小为64KB,则与TASK_SIZE_64相对应的VA_BITS为42,即大小为2^42的Task空间)=4TB。

此外,内核空间根据分页大小进行划分,可以通过参考下图进行区分。

(二)AArch64 MMU Support

arm(V8 ) architecturereferencemanual.pdf

arm V8技术预览. pdf

www.arm.com -cotex-A57介绍

Linux Support for ARM LPAE分析

ARMv8和linux初学者笔记本电脑

ARMv8体系结构和指令集.学习笔记

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。