ARM体系结构(Advance RISV Machine)
RISC是精简指令集计算机
MOV R0 , #1 目标寄存器,立即数
ARM微处理器特点
ARM:体积小,低功耗,低成本,高性能
支持Thumb(16位)/ARM(32位)双指令集 能很好地兼容8位/16位器件
大量使用通用寄存器,指令执行速度更快
大多数数据操作都在寄存器中完成
寻址方式灵活简单,执行效率高
指令长度固定
ARM7 ARM9 ARM11
第一个数字:系列
第二个数字:2:带有MMU(内存管理单元,虚拟内存管理);4:带有MPU;6:无MMU与MPU
第三个数字:0:标准Cache(4-128k);2:减小的Cache;6:可变的Cache
ARM7
采用冯诺依曼结构,数据存储器和程序存储器重合在一起,取指令和取操作数都是通过一条总线分时进行,会造成传输通道上的瓶颈现象
三级流水线结构(取指,译码,执行) 时钟速度66MKZ 每条指令平均执行1.9个时钟周期
ARM9
采用哈佛结构,程序存储器与数据存储器分开,提供了较大的存储器带宽,大多DSP选择
五级流水线结构,时钟速度位120MKZ-200MHZ,每条指令平均执行1.5个时钟周期
ARM11
八级流水线,600MHZ
R15(PC)总是指向“正在取指”的指令
所以 PC值=当前程序执行位置+8;
处理器状态
存储器的字和半字
半字:从偶数地址开始的连续两个字节构成一个半字
字:以能被4整除的地址开始的连续4个字节构成1个字
从偶地址开始连续存储:半字对齐 否则非半字对齐
从以被4整除开始连续存储:字对齐
ARM状态:32位,执行字方式
Thump:16位,执行字节方式
状态切换的例子
使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换
ARM到Thumb
CODE32
LDR R0,=Lable+1
BX R0
CODE16
Lable MOV R1,#12
Thumb到ARM
CODE16
LDR R0,=Lable //地址最低位为0 AXD调试工具
BX R0
CODE32
Lable MOV R1,#10
处理器模式
7个基本工作模式
1.用户模式(usr):正常程序执行的模式,大部分任务执行在这种模式
2.快速中断模式(fiq):高速数据传输或通道处理:高优先级中断
3.外部中断模式(irq):通常的中断处理:低优先级中断
4.管理模式(svc):供操作系统使用的一种保护模式
5.中止模式(abt):虚拟存储及存储保护:存储异常时进入
6.未定义模式(und):软件仿真硬件协处理器:当执行未定义指令时会进入这种模式
7.系统模式(sys):特权级的操作系统任务
除了用户模式外,其他模式均为特权模式
特权模式可以自由切换,用户模式不能自己切换
何时进入异常模式:
处理器复位后进入管理模式,操作系统内核通常处于管理模式
处理器访问存储器失败时,进入数据访问中止模式
处理器遇到没有定义或不支持的指令时,进入未定义模式
中断模式与快速中断模式分别对ARM处理器2钟不同级别的中断作出响应
内部寄存器
31个通用32位寄存器和6个状态寄存器
每种模式都有一组相应的寄存器组,最多可以有18个活动的寄存器
R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容
R14成为链接寄存器(LR):BL调用子程序,返回地址自动存入R14;异常返回地址
R15称为程序寄存器(PC):指向正在取指的指令
CPSR称为当前程序状态寄存器
SPSR称位程序状态保存寄存器--异常模式钟
R14寄存器与子程序调用
1.带程序跳转
2.发生中断,回来的地址存放于R14_irq,执行完毕,将内容减去某个常量后存入PC
状态寄存器
四位条件代码标志 保留位 五位控制位