arm9的操作模式,寄存器,寻址方式
2024-08-27 10:33:39
工作模式
Arm有7种工作模式:
名称 |
简称 |
简介 |
User |
Usr |
正常用户程序执行的模式(linux下用户程序就是在这一模式执行的。) |
FIQ |
Fiq |
快速中断模式 |
IRQ |
Irq |
普通中断模式 |
Supervisor |
Svc |
给操作系统准备的保护模式,权限很高的一种模式,linux的内核就是运行在此模式 |
Abort |
Abt |
比如访问虚拟内存,导致了异常,就是进入这一模式。 |
Undefined |
Und |
运行一条处理器并不支持的指令就进入此模式。 |
System |
Sys |
Armv4及以上的版本才有。用得比较少。 |
寄存器
其寄存器总共有37个,31个通用寄存器,6个状态寄存器。大致结构如下,下图总共有18个,不够37个,剩下的实际是被banked的寄存器,在不同的模式下,分组寄存器和程序状态寄存器用的是不同的物理寄存器。
下面两个
下面两个寄存器需要特别注意:
R13为堆栈寄存器
R14为LR寄存器
关于arm中的程序状态字寄存器,他相当于M3中的状态字寄存器,中断屏蔽寄存器,control寄存器的集合体,下面对它的一些比较重要的位作说明:
N和Z位代表的是运算结果的状态,比较跳转,条件执行等指令会用得到它们。
I位和F位是对快速中断和普通中断的控制。
M[]位是对操作模式和banked寄存器的使用的控制。
注:cpsr和spsr内容相同,只不过spsr可以作为cpsr的一个存档使用,粗糙的说:也就是进入其他模式之前先把cpsr的内容保存在spsr中,返回之后cpsr的值虽然已经被破坏,但是可以通过spsr回复。
寻址模式
Arm有5种寻址方式,如下:
立即数寻址
寄存器寻址
寄存器间接寻址
基址变址寻址
相对寻址
最新文章
- ReportView报表开发记录(一)
- maven的使用--初级篇
- <;a>;标签的用法。
- nltk.download()出错解决
- js日期、月份:日期加一天等
- const char* &;&; string &;&; String^ 类型转换
- Mybaits学习总结1
- Sql Server 里的向上取整、向下取整、四舍五入取整
- WEB前端性能优化小结
- ###STL学习--标准模板库
- 圣诞福利到!51Testing邀你一起来狂欢!有礼就是任性~(≧▽≦)/~
- Spring ApplicationContext的事件机制
- VMware Workstation 精致汉化系列 使用方法
- NET基础课-- 类型基础(NET之美)
- 表格单元格td设置宽度无效的解决办法 .
- Oracle数据库悲观锁与乐观锁详解
- eclipse中搜狗输入法中文状态下输出的全是英文
- Centos7+LVS-DR+Apache负载均衡web实验
- python学习日记(异常)
- CRMEB客户管理+电商管理系统帮助文档,送给有需要的人