目录
ARM处理器概述
ARM公司概述
ARM的含义
ARM公司
ARM产品系列
早先经典处理器
Cortex-A系列
Cortex-R系列
Cortex-M系列
RISC处理器
RISC处理器(精简指令集处理器)
CISC处理器(复杂指令集处理器)
ARM指令集概述
指令集
指令
指令集
ARM指令集
ARM指令集
Thumb指令集
编译原理
ARM存储模型
字节序
ARM指令存储
ARM工作模式
ARM工作模式
工作模式的理解
ARM工作模式分类
ARM处理器概述
ARM公司概述
ARM的含义
ARM(Advanced RISC Machines)有三种含义
一个公司的名称、一类处理器的通称、一种技术
ARM公司
成立于1990年11月,前身为Acorn计算机公司
主要设计ARM系列RISC处理器内核
授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片
提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件 总线架构、外围设备单元等
ARM产品系列
早先经典处理器
包括ARM7、ARM9、ARM11家族
Cortex-A系列
针对开放式操作系统的高性能处理器 应用于智能手机、数字电视、智能本等高端运用
Cortex-R系列
针对实时系统、满足实时性的控制需求 应于汽车制动系统、动力系统等
Cortex-M系列
为单片机驱动的系统提供了低成本优化方案 应用于传统的微控制器市场、智能传感器、汽车周边等
RISC处理器
RISC处理器(精简指令集处理器)
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令 RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
CISC处理器(复杂指令集处理器)
不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定
CISC处理器在性能上有很大优势,多用于PC及服务器等领域
ARM指令集概述
指令集
指令
能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...)
指令在内存中以机器码(二进制)的方式存在
每一条指令都对应一条汇编
程序是指令的有序集合
指令集
处理器能识别的指令的集合称为指令集
不同架构的处理器指令集不同
指令集是处理器对开发者提供的接口
ARM指令集
大多数ARM处理器都支持两种指令集:
这两种指令集在 ARM架构中处理器可以在ARM和thumb之间进行切换,两者可以在统一程序中混合使用
ARM指令集
所有指令(机器码)都占用32bit存储空间
代码灵活度高、简化了解码复杂度
执行ARM指令集时PC值每次自增4
Thumb指令集
所有指令(机器码)都占用16bit存储空间
代码密度高、节省存储空间
执行Thumb指令集时PC值每次自增2
编译原理
由于类似于“0101“的机器码难以维护,难以记忆,所以有了汇编语言,汇编语言与机器码一一对应,如将add对应0101的加,方便读、写、维护,但是汇编语言不可移植,因为其与CPU处理器中的机器元器件的机器码一一对应,所以有了高级语言C语言可以移植依赖于编译器
预处理:将注释进行删除,宏定义进行展开
编译:将C语言变为汇编语言
汇编:将汇编语言编程机器码
链接:将机器码与库中机器码合成
机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植
ARM存储模型
ARM采用32位架构,基本数据类型有以下三种
Byte 8bits
Halfword 16bits
Word 32bits
32位架构,单次可以运算32位的数据
数据存储
Word型数据在内存的起始地址必须是4的整数倍
Halfword型数据在内存的起始地址必须是2的整数倍
即数据本身是多少位在内存存储时就应该多少位对齐
字节序
大端对齐
低地址存放高位,高地址存放低位
a = 0x12345678;
小端对齐
低地址存放低位,高地址存放高位
a = 0x12345678;
注:ARM一般使用小端对齐
ARM指令存储
处理器处于ARM状态时
所有指令在内存的起始地址必须是4的整数倍
PC值由其[31:2]决定,[1:0]位未定义
处理器处于Thumb状态时
所有指令在内存的起始地址必须是2的整数倍
PC值由其[31:1]决定,[0]位未定义
注:即指令本身是多少位在内存存储时就应该多少位对齐
ARM工作模式
ARM工作模式
ARM有8个基本的工作模式
User 非特权模式,一般在执行上层的应用程序时ARM处于该模式
FIQ 当一个高优先级中断产生后ARM将进入这种模式
IRQ 当一个低优先级中断产生后ARM将进入这种模式
SVC 当复位或执行软中断指令后ARM将进入这种模式
Abort 当产生存取异常时ARM将进入这种模式
Undef 当执行未定义的指令时ARM将进入这种模式
System 使用和User模式相同寄存器集的特权模式
Monitor 为了安全而扩展出的用于执行安全监控代码的模式
工作模式的理解
不同模式拥有不同权限
不同模式执行不同代码
不同模式完成不同的功能
ARM工作模式分类
按照权限
User为非特权模式(权限较低),防止系统崩溃,其余模式均为特权模式(权限较高)
按照状态
FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后会进入对应的模式