工作模式

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种寻址方式,如下:

立即数寻址

寄存器寻址

寄存器间接寻址

基址变址寻址

相对寻址

最新文章

  1. ReportView报表开发记录(一)
  2. maven的使用--初级篇
  3. <a>标签的用法。
  4. nltk.download()出错解决
  5. js日期、月份:日期加一天等
  6. const char* && string && String^ 类型转换
  7. Mybaits学习总结1
  8. Sql Server 里的向上取整、向下取整、四舍五入取整
  9. WEB前端性能优化小结
  10. ###STL学习--标准模板库
  11. 圣诞福利到!51Testing邀你一起来狂欢!有礼就是任性~(≧▽≦)/~
  12. Spring ApplicationContext的事件机制
  13. VMware Workstation 精致汉化系列 使用方法
  14. NET基础课-- 类型基础(NET之美)
  15. 表格单元格td设置宽度无效的解决办法 .
  16. Oracle数据库悲观锁与乐观锁详解
  17. eclipse中搜狗输入法中文状态下输出的全是英文
  18. Centos7+LVS-DR+Apache负载均衡web实验
  19. python学习日记(异常)
  20. CRMEB客户管理+电商管理系统帮助文档,送给有需要的人

热门文章

  1. osg gis编译日志
  2. linux非root用户安装4.0.14版本redis
  3. ABAP DEMO ole示例程序
  4. .Net MVC 下载网站的文件
  5. ACS712电流传感器应用
  6. 你应该知道的4个DSP开发支持库
  7. Head First Design Patterns HeadFirst 设计模式
  8. centos7 双网口绑定
  9. flask 编码问题
  10. Eclipse使用JDBC方式连接SQLServer2017