ARM体系结构_DAY2
程序状态寄存器(CPSR)
Mode位[4:0]:处理器模式为
USER模式不能直接切换到特权模式,在特权模式下可以直接修改mode位[4:0]为10000,切换到USER模式。
T bit位[5]:处理器状态位
T = 0,J= 0处于ARM指令集状态
T = 1,J= 0处于Thumb指令集状态
T = 1,J = 1处于ThumbEE指令集状态
中断禁止位[7:6]
I = 1 进制IRQ
F = 1 进制FIQ
条件位[31:27]
- N位 Negative result from ALU ALU运算结果为一个负数时, 此为自动置 1 否则为 0
- Z位 Zero result from ALU ALU运算结果为 0 时,此位自动置 1,否则为 0
- C位 分为加法运算和减法运算两种情况:
- 进行加法运算,如果产生进位 C位自动置一
- 进行减法运算时,如果产生借位, C位自动置 0
- V位 符号位溢出,(最高为产生变化,针对于有符号数来说) V位自动置 1
计算机系统中,所有的数据都以 二进制补码 方式存储。

异常处理
ARM 有 7 类中断源:
偏移量 异常类别
- 0x1C FIQ 快速响应中断
- 0x18 IRQ 外部中断
- 0x10 Data Abort 数据终止 当访问数据时,CPU不允许访问请求 会进入此种中断
- 0x0C Perfetch Abort
- 0x08 software interrupt
- 0x04 Undefined Instruction 指令未定义异常 CPU取出一条指令,如果不能执行,此时会 将数据交由协处理器执行。若没有协处理器或者协处理器也不能处理,就会触发此中断
- 0x00 Reset 复位中断
7种异常对应的5种模式
异常源: FIQ IRQ Reset/软中断 DataAbort/PerfetchAbort Undef
CPU模式: FIQ IRQ Supervisor(SVC) Abort Undef
异常处理过程:
当异常产生异常时,ARM core(自动执行但不包括压栈操作):
- 拷贝 CPSR(current program status register)内容到 SPSR_<mode>(saved program status register)<mode>指的是具体哪一个状态的SPSR
- 设置适当的 CPSR 位:
- 改变处理器状态进入ARM状态(处理异常时,必须在ARM状态下进行)
- 改变处理器模式进入相应的异常(特权)模式
- 设置中断禁止位,防止中断处理过程中产生中断(如果需要)
Cortex A系列处理器,不允许同一类的中断嵌套 (处理FIQ时,不响应IRQ;处理IRQ时,可嵌套FIQ)
- 保存返回地址到 lr_<mode>
- 设置 pc 为相应的异常向量
- ARM7、ARM9的异常向量表固定为0x00开始的一端内存中,cortex A系列默认为 0x00 但可以手动设置
返回时,异常处理需要(中断处理程序中手动执行):
- 从 SPSR_<mode>恢复 CPSR
- 从 lr_<mode> 恢复 PC
- Note:这些操作只能在 ARM 状态执行
异常源类型,对应处理器模式。
异常优先级
Reset ——> Data Abort ——> FIQ > IRQ ——> Prefetch Abort ——> SWI→Undefined
FIQ 比 IRQ 快? 三方面原因:
- FIQ优先级高
- FIQ在中断向量表的最高偏移地址,在编程时可以直接在FIQ后面添加中断处理程序,省去了跳转指令。
- FIQ有多个私有寄存器(r8_r14),在中断处理程序中使用这几个寄存器时可以省去压栈,弹栈操作
指令流水线
三级流水线:
PC(program count)指向正在取指的指令。
PC - 4 为正在译码的指令。
PC - 8 为正在执行的指令。


ARM体系结构_DAY2的更多相关文章
- ARM体系结构简介
ARM体系结构简介 新一代的ARM9处理器,能达到两倍ARM7的处理能力,它们的区别如下: ARM微处理器的工作状态(可切换): 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令 第二种为 ...
- ARM体系结构和汇编指令
第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解 ...
- ARM体系结构
工作模式_ufisaus USR(User) :正常程序的执行状态 FIQ(Fast interrupt) :用于高速数据传输和通道处理 IRQ(Interrupt) :通常的中断处理 SVC(Sup ...
- ARM体系结构与编程
ARM处理器的7中执行模式:usr.fiq.irq.svc.abt.und.sys. ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在全部模式下指的都是同一个物理寄存器:备份寄 ...
- 1.0ARM体系结构-ARM体系结构
对ARMcpu有整体而专业的认识. ARM只是设计arm核,而不生产. ARM 掌握的是标准.
- ARM体系结构总结
特殊功能寄存器与外设绑定,通用寄存器是与CPU绑定. ARM是RISC架构 常用ARM汇编指令只有二三十条 ARM是低功耗CPU ARM的架构非常适合单片机.嵌入式.尤其是物联网领域:而服务器等高性能 ...
- ARM体系结构与编程-3
ARM存储系统:ARM中用于存储管理的系统控制协处理器CP15:包括16个32位寄存器,其编号为0到15.实际上对于某些编号的寄存器可能相应有多个物理寄存器. 訪问CP15寄存器的指令:MRC.MCR ...
- ARM体系结构与编程-5
GET通经常使用于包括定义常量的源文件. 比如:GET 2440addr.inc 用AREA定义一个段.ENTRY用于指定程序的入口点,END用于告诉汇编器源文件已经结束. 比如: AREA init ...
- ARM体系结构与编程读书笔记——处理器的寄存器
ARM处理器共有37个寄存器,其中包括: 31个通用寄存器,包括程序计数器(PC)在内,寄存器都是32位: 6个状态寄存器,这些寄存器都是32位的,目前只使用了其中12位: 通用寄存器 可以分为下面3 ...
随机推荐
- apache ab工具对网站进行压力测试
Apache -- ab工具主要测试网站的(并发性能) 这个工具非常的强大. 基本语法 : cmd>ab.exe –n 请求总次数 -c 并发数 请求页面的url 进入到ab.ex ...
- 打开新窗口(window.open)
open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选参数,在窗口中要显示网页的网址或路 ...
- HTML与CSS入门——第五章 使用文本块和列表
知识点: 1.在页面上对齐文本的方法 2.三种HTML列表的使用方法 3.在列表中放置列表的方法 5.1 在页面上对齐文本: 父元素内子元素文本的居中:在控制父元素的text-align:center ...
- IIS Express 终极玩法
进入正题之前,先吐嘈下微软的win10升级吧.之前有意不想将win 7 旗舰版(也是破解版哈)升到win 10,自从微软推出win10后,其本上对其没多大兴趣,感觉系统各种卡顿,各种不流畅,界面各种不 ...
- 转载——CLR标量函数、表值函数和聚合函数(UDA)
本节主要介绍使用CLR创建标量函数,表值函数和聚合函数. 所谓标量函数指的就是此函数只返回一个值.表值函数返回值是一个表.聚合函数是在select语句中使用的,用来聚合一个结果集,类似于Sum()或是 ...
- 32位PLSQL_Developer连接oracle11g_64位
1. 请将你下载的instantclient-basic-win32-10.2.0.5 文件解压.然后复制到你的数据库安装的文件夹下的producti文件夹下,我的是: E:\app\Administ ...
- ul li span addClass removeClass
<link type="text/css" href="./style/css/base.css" rel="stylesheet"& ...
- PL/SQL Developer主界面窗口左边窗口默认设置
中文版:在菜单 工具 -> 首选项 -> 用户界面 -> 选项 窗口中,将“自动保存桌面”勾选上就可以了. 截图如下: 英文版:在菜单 Tools -> Preferences ...
- nvm linux命令
nvm alias default 0.12.10 nvm alias default 0.10.24 nvm list NVM_NODEJS_ORG_MIRROR=http://npm.taobao ...
- iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
iOS 的 APP 在系统中如何适配不同的屏幕的尺寸 标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone ...