ARM编程模型-状态模式

ARM的两种工作状态
大部分的ARM处理器都实现了两种指令集,32位ARM指令集和16位Thumb指令集,看生成的机器码是32位的还是16位的

ARM v6引入了新的指令集Thumb-2,能够提供32位和16位的混合指令,在增强了灵活性的同时保持了代码的高密度。
ARM的2种工作状态
ARM状态:执行32位ARM指令集
Thumb状态:执行16位Thumb指令集或v6及以后版本支持的Thumb-2指令集。
在这里插入图片描述

1.ARM v4T~v6的工作模式

有七种基本的操作模式:
每一种模式只能访问自己的栈空间和不通的寄存器子集。
有一些操作只能在特权模式下执行。
在这里插入图片描述
ARM之所以设计出这么多种模式出来,就是为了「应对CPU在运行时各种突发事件」,比如要支持正常的应用程序的运行,在运行任何一个时间点又可能发生很多异常事件,比如:关机、收到网卡信息、除数为0、访问非法内存、解析到了非法指令等等,不光要能处理这些异常还要能够从异常中再返回到原来的程序继续执行。

  1. 用户模式:用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
  2. 系统模式:系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
  3. 一般中断模式:一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
  4. 快速中断模式:快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
  5. 管理模式:管理模式是「CPU上电后默认模式」,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时通过软件中断进入该模式。
  6. 终止模式:中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
  7. 未定义模式:未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
  8. Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式
    除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

2.模式切换

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。

3.异常(Exception)

指由处理器执行指令导致原来运行程序的中止,异常与指令运行相关,是CPU执行程序产生的,是同步的,可分为精确异常和非精确异常。异常处理遵守严格的程序顺序,不能嵌套,只有当第一个异常处理完并返回后才能处理后续的异常。
异常源
要进入异常模式,一定要有异常源,ARM规定有7种异常源:
在这里插入图片描述
异常源与模式关系

  1. 重启异常进入管理模式;
  2. 快速中断请求异常进入快中断模式,支持高速数传输及通道处理(FIQ异常响应时进入此模式);
  3. 中断请求异常进入中断模式,用于通用中断处理,(IRQ异常响应时进入此模式);
  4. 预取指中止,数据中止异常进入中止模式,用于支持虚拟内存和/或存储器保护;
  5. 未定义指令异常进入未定义模式,支持硬件协处理器的软件仿真(未定义指令异常响应时进入此模式) ;
  6. 软件中断,复位异常进入管理模式,操作系统保护代码(系统复位和软件中断响应时进入此模式) ;
    异常发生之后,CPU必须要立刻做出响应

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94640.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 1.1 背景相关与系统架构分析

目录 1.1 背景相关与系统架构分析 分类 Android 基础入门教程 1.Android背景与当前的状况 2.Android系统特性与平台架构 系统特性: 平台架构图: 架构的简单理解: 3.本节小结: 1.1 背景相关与系统架构分析 分类 Android 基础…

第9章 函数

本章介绍以下内容: 关键字:return 运算符:*(一元)、&(一元) 函数及其定义方式 如何使用参数和返回值 如何把指针变量用作函数参数 函数类型 ANSI C原型 递归 如何组织程序?C的设…

【网络安全带你练爬虫-100练】第19练:使用python打开exe文件

目录 一、目标1:调用exe文件 二、目标2:调用exe打开文件 一、目标1:调用exe文件 1、subprocess 模块允许在 Python 中启动一个新的进程,并与其进行交互 2、subprocess.run() 函数来启动exe文件 3、subprocess.run(["文件路…

SpringCloudAlibaba Gateway(一)简单集成

SpringCloudAlibaba Gateway(一)简单集成 随着服务模块的增加,一定会产生多个接口地址,那么客户端调用多个接口只能使用多个地址,维护多个地址是很不方便的,这个时候就需要统一服务地址。同时也可以进行统一认证鉴权的需求。那么服…

QML与C++的交互操作

QML旨在通过C 代码轻松扩展。Qt QML模块中的类使QML对象能够从C 加载和操作,QML引擎与Qt元对象系统集成的本质使得C 功能可以直接从QML调用。这允许开发混合应用程序,这些应用程序是通过混合使用QML,JavaScript和C 代码实现的。除了从QML访问…

SpringBoot整合websockt实现消息对话

文章目录 前言websockt什么是websockt?websockt和Socket区别代码部分实战应用 前言 websockt 什么是websockt? WebSocket是一种在Web应用程序中实现实时双向通信的技术。Web应用程序通常是基于HTTP协议的,HTTP是一种请求/响应式的协议&…

spring boot 测试用例

依赖包 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.2.5.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>ju…

【探索SpringCloud】服务发现-Nacos服务端数据结构和模型

前言 上一文中&#xff0c;我们从官方的图示了解到Nacos的服务数据结构。但我关心的是&#xff0c;Nacos2.x不是重构了吗&#xff1f;怎么还是这种数据结构&#xff1f;我推测&#xff0c;必然是为了对Nacos1.x的兼容&#xff0c;实际存储应该不是这样的。于是&#xff0c;沿着…

【OpenCV入门】第七部分——图像的几何变换

文章结构 缩放dsize参数实现缩放fx参数和fy参数实现缩放 翻转仿射变换平移旋转倾斜 透视cmath模块 缩放 通过resize()方法可以随意更改图像的大小比例&#xff1a; dst cv2.resize(src, dsize, fx, fy, interpolation)src&#xff1a; 原始图像dsize&#xff1a; 输出图像的…

认识JVM的内存模型

从上一节了解到整个JVM大的内存区域&#xff0c;分为线程共享的heap&#xff08;堆&#xff09;&#xff0c;MethodArea&#xff08;方法区&#xff09;&#xff0c;和线程独享的 The pc Register&#xff08;程序计数器&#xff09;、Java Virtual Machine Stacks&#xff08;…

TBOX开发需求说明

TBOX功能需求&#xff1a; 支持4G上网功能&#xff0c;可获取外网IP&#xff0c;可和云端平台连通支持路由功能&#xff0c;支持计算平台、网关和云端平台建立网络连接支持USB转网口&#xff0c;智能座舱会通过USB连接AG35建立网络连接&#xff08;类似IVI通过USB口连接TBOX&a…

【论文阅读】Pay Attention to MLPs

作者&#xff1a;Google Research, Brain Team 泛读&#xff1a;只关注其中cv的论述 提出了一个简单的网络架构&#xff0c;gMLP&#xff0c;基于门控的MLPs&#xff0c;并表明它可以像Transformers一样在关键语言和视觉应用中发挥作用 提出了一个基于MLP的没有self-attentio…