arm9的操作模式,寄存器,寻址方式
工作模式
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种寻址方式,如下:
立即数寻址
寄存器寻址
寄存器间接寻址
基址变址寻址
相对寻址
arm9的操作模式,寄存器,寻址方式的更多相关文章
- Cortex-M3 操作模式与特权等级
Cortex-M3支持2个模式(Handler模式.线程模式)和2个特权等级(特权级.非特权级). 当处理器处在线程模式时,既可以使用特权级,也可以使用非特权级. 当处理器处在Handler模式时,总 ...
- ListView多选操作模式——上下文操作模式
1.什么叫上下文操作模式 2.如何进入上下文操作模式 1.ListView自身带了单选.多选模式,可通过listview.setChoiceMode来设置: listview.setChoiceMod ...
- linux下操作gpio寄存器的方法
一. 在驱动中: 1. 用的时候映射端口:ioremap; #define GPIO_OFT(x) ((x) - 0x56000000) #define GPFCON (*(volatile unsi ...
- pytthon—day8 读写模式的结合、文件操作模式、with完成文本文件复制、游标操作
一.读写模式的结合 w:写指没有新建文件,有文件就清空 w=open('1.txt','w',encoding='utf-8') w.write('000\n') 在写入数据时,需要及时处理内存空间, ...
- day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作
复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ...
- day8 八、文件操作模式、文件的复制与文件游标操作
一.文件操作 1.wr模式结合 ① w = open('1.txt', 'w', encoding='utf-8') # w:没有文件新建文件,有文件就清空文件 w.write('000\n') w. ...
- 关于NLB的群集操作模式知识 (转载)
单播:单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性).由于所有绑定群集的网络适配器的MAC都相同,所以在单网卡的情况下,各节点之间是不能 ...
- Python小白学习之路(十九)—【文件操作步骤】【文件操作模式】
一.文件操作步骤 step1:打开文件,得到文件句柄并赋值给一个变量step2:通过句柄对文件进行操作step3:关闭文件 举例: a = open('hello world', 'r', encod ...
- Android开发4——文件操作模式
一.基本概念 // 上下文对象private Context context; public FileService(Context context){ super(); this.context = ...
随机推荐
- ES6深入浅出-6 ES 6 模块-1.模块化速学
把模块先默认认为是豆腐块 为什么前端需要模块? 没有模块的方式 预览这个html页面 一共200行js代码 前100行在做一件事 ,另外100行在做另一件事,这样就是两个模块 main.js来 ...
- DDos攻击解决办法
(1).DDos概念 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控 ...
- CentOS7 配置sendmial + PHP mail函数发送邮件
https://blog.csdn.net/jiabangok/article/details/51840556
- LODOP中的各种宽高和位置简短问答
LODOP中的位置边距,可查看本博客另一篇相关博文:LODOOP中的各种边距 打印项.整体偏移.可打区域.内部边距关于LODOP中的各种宽高,可查看本博文简短问答下方的正文:.该文其实有两个以前的相关 ...
- sonar:查询全部项目的bug和漏洞总数(只查询阻断/严重/主要级别)
1.统计所有项目主要以上的漏洞和bug -- 统计所有项目主要以上的漏洞和bug ,) AND severity IN('BLOCKER','CRITICAL','MAJOR') 2.统计所有某个项目 ...
- 【C/C++开发】C语言实现函数可变参数
函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: ...
- composer安装扩展包异常
我是tp5.1下,用composer安装扩展包,在命令行运行,无任何不反应,不下载也不报错,这时,我们先ctrl+c退出执行的命令,然后在tp5.1根目录下,找到composer.json文件,并用编 ...
- Python基础--软件Anaconda的下载与安装
1.Anaconda软件的优点: Anaconda指的是一个开源的Python发行版本开发平台,在进行Python开发上方便简洁,有利于初步学习和实践深度学习. 2.Anaconda软件的下载: An ...
- Linux(Ubuntu)下的OpenGl的环境安装, 在qt程序中使用opengl库
OpenGl的环境安装 以下参考自:https://blog.csdn.net/wasaiheihei/article/details/52085397 1. 建立基本编译环境 首先不可或缺的,就是编 ...
- 【转】那些年用过的Redis集群架构(含面试解析)
引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...