第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构

第1部分- Linux ARM汇编ARM技术变迁

关于ARM版本

先来看下ARM版本如下图:

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第1张图片

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第2张图片

Tips:Cortex-A53同样是采取了ARMv8-A架构,能够支持32位的ARMv7代码和64位代码的AArch64执行状态。

ARM Cortex内核系列提供非常广泛的具有可扩展性的性能选项,设计人员有机会在多种选项中选择最适合自身应用的内核,而非千篇一律的采用同一方案。Cortex系列组合大体上分为三种类别:

  • Cortex-A—面向性能密集型系统的应用处理器内核
  • Cortex-R—面向实时应用的高性能内核
  • Cortex-M—面向各类嵌入式应用的微控制器内核

In 2009 the ARM7 accounted for 55% of the processor shipments, with

all Cortex processors contributing only 1%.

By 2012 the ARM7 shipments had dropped to 36%, with the Cortex-M family shipments contributing 22%

每个核使用的ARM体系结构的版本如下图:

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第3张图片

不同的体系结构有不同的指令集变化,但是都保持了向上兼容。每个体系结构有包含了不同的处理器型号,例如ARM7可能跨越不同的体系结构。

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第4张图片

ARM技术变迁

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第5张图片

ARMv8-A架构

  • 新增一套64位的指令集,称作A64
  • 支持现场32位指令集,成为A32和T32,就是以前的ARM和Thumb指令集
  • 定义AArch64和AArch32两套运行环境,分别指向64位和32位指令集,软件可以在需要的时候进行切换。
  • 在ARMv7安全扩展的基础上,新增了安全模型。
  • 在ARMv7虚拟化扩展的基础上提供了完整的虚拟化框架,从硬件上支持虚拟化

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第6张图片

典型嵌入式系统

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第7张图片

编译器

目前常用的ARM编译环境有2种:

ARMASM: ARM公司的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定,类似在X86中Intel的汇编编译器。

GNU: GNU工具的ARM版本,与ARMASM略有不同;

arm公司出的ARM编译器,包括以下几个:

  • armclang:  编译 c ,c++, GNU assembly language的源代码,不能编译ARM汇编代码
  • armasm: 只能编译 arm汇编代码
  • armlink:  链接器,用来将目标代码,链接成可执行程序
  • armar:  打包,将目标代码打包成一个库
  • fromelf: 将可执行程序,转换为其他的镜像文件

第1部分- Linux ARM汇编-ARM技术变迁演进和ARMv8-a架构_第8张图片

字节新约定

字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。

半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。

字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。

 

ARM 采用的是32位架构.

ARM 约定:

Byte : 8 bits

Halfword :16 bits (2 byte)

Word : 32 bits (4 byte)

 

异常等级

软件运行异常级别:

EL0: 普通用户应用程序

EL1: 操作系统内核通常被描述为特权

EL2: 管理程序

EL3: 低级固件,包括安全监视器

 

你可能感兴趣的:(64位,ARM处理器汇编技术系列)