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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了