ARM基础 四、ARM编程模型
来源:互联网 发布:超次元矩阵闪退 编辑:程序博客网 时间:2024/06/13 14:30
1、 ARM处理器的工作状态
1)从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。
切换到ARM状态
当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
4)ARM 采用的是32位架构
ARM 约定: Byte:8 bits Halfword:16 bits (2 byte) Word :32 bits (4 byte)
Doubleword:64-bits(8byte)(Cortex-A处理器)
2、 对齐
1)非对齐地址将产生不可预测的/未定义的结果
2)用‘Data Abort’ 异常来检测无效的非对齐数据存取3)需要额外的扩展逻辑,或者MMU来实现
4)谨防指令读取时出现非对齐
非对齐数据存取能够完成, 但不是用 LDR:使用 LDRB, STRB 传递字节,或使用LDM 加移位/屏蔽
3、字节顺序
ARM有7个基本工作模式:
User(用户模式):非特权模式,ARM处理器正常的程序执行状态,大部分任务执行在这种模式
FIQ(快中断模式):当一个高优先级(fast)中断产生时将会进入这种模式
IRQ(中断模式):当一个低优先级(normal)中断产生时将会进入这种模式
Supervisor(管理模式):当复位或软中断指令执行时将会进入这种模式
Abort(数据访问终止模式):当存取异常时将会进入这种模式
Undef(未定义指令中止模式):当执行未定义指令时将会进入这种模式
System(系统模式):使用和User模式相同寄存器集的特权模式
ARM的工作模式改变可以由软件改变、也可以由外部中断或者异常处理改变。
除了usr之外其他模式称为特权模式,除了usr和system其他模式称为异常模式,用于处理中断和异常,或者访问受保护的系统资源等。
5、ARM寄存器
37个寄存器 = 7个未分组寄存器(R0~R7)+ 2×(5个分组寄存器R8~R12) + 6×2(R13=SP,R14=lr 分组寄存器) + 1(R15=PC) + 1(CPSR) + 5(SPSR)
所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐)
- ARM基础 四、ARM编程模型
- ARM:ARM体系结构与编程、ARM指令流水线、ARM编程模型基础
- ARM编程模型
- ARM编程模型
- ARM编程模型
- arm处理器编程模型
- ARM编程模型
- ARM编程模型
- ARM编程模型
- ARM的编程模型
- ARM汇编编程基础
- ARM汇编编程基础(四) -- ADS开发环境的使用
- ARM汇编编程基础(四) -- ADS开发环境的使用
- ARM汇编编程基础(四) -- ADS开发环境的使用
- ARM微处理器的编程模型
- ARM汇编编程基础之四 —— ARM汇编伪操作
- ARM汇编编程基础之四 —— ARM汇编伪操作
- ARM汇编编程基础之四 —— ARM汇编伪操作
- c#之动态数组(ArrayList)
- PCIe学习笔记(2)---PCI-x相关
- java自动拆装箱
- PAT团体程序设计天梯赛练习题GPLT11~20
- 【English】Slow Burn
- ARM基础 四、ARM编程模型
- 1004.Let the Balloon Rise
- 315. Count of Smaller Numbers After Self
- ListView分类加载
- Struts2+Hibernate+Spring整合
- POJ 2707 Copier Reduction G++
- 309. Best Time to Buy and Sell Stock with Cooldown
- TCP重传的次数和间隔时间
- 亚马逊 AWS 免费云服务操作流程