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 = ...
随机推荐
- Java中字符串操作的基本方法总结:
1.字母大小写转换: package com.imooc; public class SortDemo { public static void main(String[] args) { char ...
- Spring cloud微服务安全实战-4-1章节概述
过渡到复杂的微服务场景下面. 搭建起一个简单的微服务架构,一个网关,一个安全中心,两个微服务,然后会看到如何将安全相关的问题解构出来放在网关上. 然后与OAuth协议整合起来.
- 【Mybatis】MyBatis之缓存(七)
MyBatis缓存介绍 Mybatis 使用到了两种缓存:一级缓存(本地缓存.local cache)和二级缓存(second level cache). 一级缓存:基于PerpetualCache ...
- linux记录-安装zabbix监控系统
1. 安装依赖yum -y install libcurl-devel libxml2-devel net-snmp net-snmp-devel2. 安装 nginxyum -y install n ...
- ubuntu18.04连接pptpd服务器(未成功)
sudo apt-get install pptp-linux sudo pptpsetup --create testvpn --server 127.0.0.1 --username your_u ...
- class类名在webpack项目中的两种引用方式
一.问题描述 在项目工程中,我们通常既用到css module,也用到普通的less文件引用方式,代码及webpack配置如下,运行时,发现只有css module起作用,如何让两者都起作用呢? // ...
- 【Leetcode_easy】993. Cousins in Binary Tree
problem 993. Cousins in Binary Tree 参考 1. Leetcode_easy_993. Cousins in Binary Tree; 完
- 如何解决mac brew遇到无法下载的依赖?
使用brew安装软件时,需要下载依赖包,但是如果依赖包特别大的时候,就很容易失败:brew本身不支持断点续传:但是可以使用wget -c的方式断点续传的下载依赖:下载完如何给brew安装使用呢?参考: ...
- consui(二)集群配置
consul集群搭建:一.软件安装Linux 环境下载zip包然后直接解压,然后把解压的文mv consul /bin检验安装是否成功,查看版本[root@node1 ~]consul -vConsu ...
- Andrew Ng机器学习课程10
Andrew Ng机器学习课程10 a example 如果hypothesis set中的hypothesis是由d个real number决定的,那么用64位的计算机数据表示的话,那么模型的个数一 ...