ARM体系结构——ARM处理器概述

ARM(Advanced RISC Machines)

  • RISC经典指令集处理器系列,X86 AMD属于CISC复杂指令集。
  • RISC设计理念是只保留常用的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令。
  • ARM处理器系列Cortex-A、Cortex-R、Cortex-M。Cortex不同系列用于不同的场景。

ARM指令集

指令的概念

  • 能够指示处理器执行某种运算的命令成为指令
  • 指令在内存以机器码的方式存在
  • 每一条指令都对应一条汇编
  • 程序是指令的有序集合

指令集的概念

处理器能识别的指令的集合成为指令集

不同架构的处理器指令集不同

指令集是处理器对开发者提供的接口

 

ARM指令集

大多数ARM处理器都支持两种指令集:

  • ARM指令集

所有指令都占用32bit存储空间,代码灵活度高、简化了解码复杂度,

执行ARM指令集时PC值每次增加4。

  • Thumb指令集

所有指令都占有16bit存储空间,代码密度高、节省存储空间,

执行thumb指令集时PC值每次增加2。

 

编译原理

汇编

代替指令机器码的汇编指令,比如加法指令机器码:0101 —— 对应汇编指令ADD。

汇编解决了机器码难以解读的问题。

编译器

把高级语言编译为汇编指令,再编译成机器码。

解决了汇编不可移植的问题。


 

ARM存储模型

ARM数据类型

ARM采用32位架构,基本数据类型有以下三种:

  • Byte  8bits  对应C语言规定的char
  • Halfword  16bits  对应C语言规定的short
  • Word  32bits  对应C语言规定的int

数据存储:

world型数据在内存的起始地址必须是4的整数倍

Halfword型数据再内存的起始地址必须是2的整数倍

字节序

ARM一般使用小端对齐,即低地址存低位,高地址存高位。

ARM指令存储

处理器处于ARM状态时

因为一个指令在内存存储是4个字节,而内存一个地址对应一个字节。

所以所有指令在内存的起始地址必须是4的整数倍。

PC值由其[31:2]决定,[1:0]位未定义。PC: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xx00

处理器处于Thumb状态时

所有指令在内存的起始地址必须是2的整数倍。

PC值由其[31:1]决定,[0]位未定义。PC: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx0


ARM工作模式

ARM Cortex-A9 有8个基本的的工作模式

User   非特权模式,一般在执行上层的应用程序时,ARM处于该种模式

FIQ  当一个高优先级中断产生后,ARM将进入这种模式

IRQ  当一个低优先级中断产生后,ARM将进入这种模式

SVC  当复位或执行软中断指令后,ARM将进入这种模式

Abort  当产生存取异常时,ARM将进入这种模式

Undef  当执行未定义的指令时,ARM将进入这种模式

System  使用和User模式相同寄存器集的特权模式

Monitor  为了安全而扩展出的用于执行安全监控代码的模式

工作模式的概念

  • 不同的模式拥有不同的权限,User的权限是最低的。
  • 不同模式执行不同代码
  • 不同模式完成不同的功能

ARM工作模式分类

按照权限

User模式为非特权模式,其余模式均为特权模式。

按照状态

FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后进入对应的模式。


END

posted @ 2022-04-14 17:39  zj城城城城  阅读(413)  评论(0编辑  收藏  举报