13. The ARMv8-A instruction sets

ARMv8-A相关历史文章:

  • 1. Fundamentals of ARMv8-A
  • 2. Execute states
  • 3. Changing Exception Levels
  • 4. Changing Execution state
  • 5. Registers
  • 6. Processor state
  • 7. The Saved Process Status Register
  • 8. System Registers
  • 9. The System Control Register
  • 10. Changing Executing State (registers)
  • 11. Register at AArch32
  • 12. A64 instructions

A64指令集和A32指令集类似,都是32bit宽,并且有类似的语法。指令集使用ARMv8-A体系结构中的通用命名约定,以前的32-bit指令集命名如下:

  • A32,在AArch32执行状态下,A32与ARMv7-A在很大程度上都是兼容的,不过还是存在一些差异。A32也提供了一些新的指令来与A64指令集中的某些特性来对齐。
  • T32,Thumb指令集最早在ARM7TDMI处理器中被引入,只包含16-bit指令。16-bit指令集在牺牲一些性能的成本下可以提供很小的代码。ARMv7-A处理器中,包括Contex-A系列,支持Thumb-2技术,Thumb-2扩展了Thumb指令集,提供了16-bit和32-bit的混合指令。这个可以在保持小的代码尺寸下,提供与A32指令集相当的性能。正因为它的大小和性能优势,越来越多的32-bit代码都开始利用Thumb-32的技术。

所有的A64指令都是相同的长度,不像T32是可变长的指令集。这个可以使管理和跟踪生成的代码序列更容易,尤其在动态代码生成器上。

13.1 Switching between instruction sets

在单个应用程序中不可能使用来自两种执行状态的代码,在A64和A32或T32指令集中,没有交互操作。
以A64编写的代码不能在ARMv7-A系列处理器中运行,而为ARMv7-A处理器编写的程序可以在ARMv8-A处理器中的AArch32状态下运行:


13.2 Addressing

当处理器能使用单个寄存器来保存64-bit的值时,在程序中访问大内存就变得简单了。32-bit的程序访问的地址范围限制在4G,大部分的可寻址空间都被保留给了操作系统内核、库、外设等,空间不足意味着程序在执行时可能需要映射内存中的一些数据。使用64-bit的指针,有较大的地址空间,可以避免这个问题,同时也使内存映射文件技术的使用变得更方便,也更具有吸引力。即使物理RAM可能不够大来包含整个文件,文件的内容可以被映射到内存空间中。

你可能感兴趣的:(13. The ARMv8-A instruction sets)