arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?
ARM
首先先介绍一下ARM公司。
ARM成立于1990年11月,前身为Acorn计算机公司
主要设计ARM系列RISC处理器内核
授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片
提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等
CPU中央处理器
首先在芯片中,中央处理器(CPU) 是一台计算机的运算核心和控制核心。
CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。
CPU细分的话可以分为:Kernel(也称为ARM内核) 和外设。
ARM内核
在ARM内核中,主要包括:
ALU:算数逻辑单元
RO~R12:通用寄存器(不可被寻址)
PC:程序寄存器
LR:连接寄存器
SP:栈指针寄存器
Cache:高速缓存
MMU:内存管理单元
因为处理器的编码是一串数字,比较难记,因此开发出了助记符号来降低开发难度提高效率,所以产生了汇编语言,由于汇编语言的结构不是很清晰,因此人们采用了汇编语言来产生较高层次的语言(如C语言)。
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。
所以编译流程分为四个步骤:
编译流程分为四个步骤:
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking
ARM三级存储系统
三级存储系统 速度 容量 价格
Cache 快 小 贵
主存储器(RAM) 中 中 小贵
辅助存储器(ROM) 慢 大 便宜
在高速缓冲存储器(Cache)中,CPU可以直接访问,用来存放当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据。
在主存储器中,可由CPU直接访问,用来存放当前正在执行的程序和数据。
在辅助存储器中,设置在主机外部,CPU不能直接访问,用来存放暂时不参与运行的程序和数据,需要时再传送到主存。
RAM分类
(1)sram(static ram) 用晶体管存储0、1。速度快,成本高,存储密度低。
(2)dram(dynamic ram) 动态存储,用电容充放电存储0,1。功耗大,需要外接刷新电路,读写速度低于sram。成本低,存储密度大。
(3)sdram(synchronous dram) 增加了同步电路,提高dram的数据读写速度。
(4)ddr ram (全称ddr sdram即double data rate sdram),为sdram的下一代。目前已发展到ddr5。
(5)iram (internal ram)注意iram并非是真正意义上的某种ram,通常iram就是sram,它通常存在于Soc内部,所以被称为iram。
ROM分类
(1)rom 非易失性存储器,最早的rom在出场时写入数据,之后无法更改。
(2)prom (programmable rom)可编程rom。出场后能够让用户写入一次数据,例如cdrom。
(3)eprom (erasable prom)可擦写prom,出场后可以擦除数据再次写入,但需要特殊的设备。如紫外光等。
(4)eeprom (electically eprom)电可擦写可编程rom,无需专用设备就可以擦写,编程。
(5)flash 闪存,新一代非易失性存储器。
flash存储器可以分为:
①nor(或非) flash :可以被寻址,但是价格贵
②nand(与非) flash
以上就是背景
ARM的工作模式
ARM有7个基本工作模式:
(1)User:非特权模式,大部分任务执行在这种模式
(2)FIQ:当一个高优先级(fast)中断产生时将会进入这种模式
(3)IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
(4)Supervisor:当复位或软中断指令执行时将会进入这种模式
(5)Abort:当存取异常时将会进入这种模式
(6)Undef:当执行未定义指令时会进入这种模式
(7)System:使用和User模式相同寄存器集的特权模式
Cortex-A特有模式:
Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式
ARM9的通用寄存器
这个内容上面已经介绍过
ARM 寄存器
ARM 有37个32-Bits长的寄存器.
1个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器
Cortex体系结构下有40个32-Bits长的寄存器
Cortex-A多出3个寄存器,Monitor 模式 r13_mon , r14_mon, spsr_mon
当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取:
相应的r0-r12子集
相应的 r13 (the stack pointer, sp) and r14 (the link register, lr)
相应的 r15 ( the program counter, pc)
相应的CPSR(current program status register, cpsr)
特权模式 (除system模式) 还可以存取;
相应的 spsr (saved program status register)
异常向量表中irq的异常向量是多少?
cpsr中的哪几位是用来设置工作模式的?
M[4:0]:用来设置工作模式
User 模式下,不能操作 bit[4:0],即不能切换处理器模式
更常见的情况是,处理器因异常事件而自动改变模式。
处理器模式:
ARM有9个基本工作模式:
(1)User(USR):10000
(2)FIQ:10001
(3)IRQ:10010
(4)Supervisor(SVC):10011
(5)Monitor(MON):10110
(6)Abort(ABT):10111
(7)Hyp(HYP):11010
(8)Undef(UND):11011
(9)System(SYS):11111
T Bit
T = 0;J=0; 处理器处于 ARM 状态
T = 1;J=0 处理器处于 Thumb 状态
T = 1;J=1 处理器处于 ThumbEE 状态
中断禁止位:
I = 1: 禁止 IRQ.
F = 1: 禁止 FIQ
A位:
A=1 禁止不精确的数据异常
E位:
大小端控制位
IT[7:2]:
IF….THEN….指令执行状态位
GE[3:0] :
大于或等于(当执行SIMD指令时有效)
DNM位:
Do Not Modify
J 位:
仅ARM v5TE-J架构支持
T=0;J = 1 处理器处于Jazelle状态
也可以和其他位组合
Q 位:
仅ARM v5TE-J架构支持
指示饱和状态
条件位:
N = Negative result from ALU
Z = Zero result from ALU
C = ALU operation Carried out or borrow
V = ALU operation oVerflowed
r13,r14,15别名是什么?有什么作用?
R13:SP(栈指针寄存器)
每一种异常模式都有其自己独立的R13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。
R14:LR(连接寄存器)
它有两个特殊功能。
(1)保存子程序返回地址。使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回。
(2)当异常发生时,异常模式的r14用来保存异常返回地址,将r14如栈可以处理嵌套中断。
R15:PC(程序寄存器)
PC是有读写限制的。当没有超过读取限制的时候,读取的值是指令的地址加上8个字节,由于ARM指令总是以字对齐的,故bit[1:0]总是00。当用str或stm存储PC的时候,偏移量有可能是8或12等其它值。在V3及以下版本中,写入bit[1:0]的值将被忽略,而在V4及以上版本写入r15的bit[1:0]必须为00,否则后果不可预测。
相关文章:

arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?
ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月,前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…...

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?
批量调节音频速度是现代音频处理中的一个重要环节,尤其在音乐制作、电影剪辑、有声书制作等领域,它能够帮助制作者快速高效地调整音频的播放速度,从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项,…...
pe格式从入门到图形化显示(十)-扩展最后一个节
文章目录 前言一、怎么扩展最后一个节?二、扩大节1.扩展节2.保存文件 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、怎么扩展最后一个节? 在PE文件中,扩大最后一个节通常是通过修改PE文件头中的节表来实现的。…...

设计模式之创建型模式---建造者模式
文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式,在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式:可复用面向对象软件基础》中被提及,它的…...
如何从零开始训练一个语言模型
如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…...
Python 设计一个监督自己的软件1
基本要求:每做一件事,软件就会按照事情权重加相应的分数,总分数也会增加,要可视化页面 使用Python编写的一个简单的日常任务记录和评分系统,包括可视化页面。 首先,我们定义一个任务字典,其中包含各种日常任务及其对应的权重分数…...

商家转账到零钱权限开通操作攻略
商家转账到零钱是什么? 商家转账到零钱是微信商户号里的一个功能,很早以前叫企业付款到零钱。 从2022年5月18日,原“企业付款到零钱”升级为“商家转账到零钱”,已开通商户的功能使用暂不受影响,新开通商户可前往「产…...

【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 背景和动机 背景动机 工作内容 KITE 拓扑 实验方法和评估结果 Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 通…...

数据结构—堆
什么是堆 堆是一种特殊的树形结构,其中每个节点都有一个值。堆可以分为两种类型:最大堆和最小堆。在最大堆中,每个节点的值都大于等于其子节点的值;而在最小堆中,每个节点的值都小于等于其子节点的值。这种特性使得堆…...

Kubernetes学习笔记8
Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了,那么我们如何使用Kubernetes集群运行企业的应用程序呢?那么,我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱,它允许你执行所有可能的Kube…...

[渗透利器]在线渗透测试工具箱?测评
前言 hxd更新完了在线工具箱,受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便,以往用过的工具箱大多都是以离线打包的方式发布,该工具箱,作者自己掏钱自己买服务器,自己买带宽,先生大义。…...

rocketmq和rabbitmq总是分不清?
1. 官方解答 摘自百度搜索: 2. 通俗易懂的回答...

利用Python ARM网关仓储物流AGV小车控制器
在现代智慧物流体系中,高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关,并结合Python的二次开发能力,可以有效集成并强化物流管理系统的数据处理与通信功能,…...

Transformer详解和知识点总结
目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力(Multi-head self-attention) 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文:https://arxiv.org/abs/1706.03762 李沐B站视频:https://www.bilibi…...

【Ubuntu】update-alternatives 命令详解
1、查看所有候选项 sudo update-alternatives --list java 2、更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alternatives --auto java 4、删除候选项 sudo update-alternatives --rem…...
数据结构之堆练习题及PriorityQueue深入讲解!
题外话 上午学了一些JavaEE初阶知识,下午继续复习数据结构内容 正题 本篇内容把堆的练习题做一下 第一题 1.下列关键字序列为堆的是:( A ) A: 100,60,70,50,32,65 B: 60,70,65,50,32,100 C: 65,100,70,32,50,60 D: 70,65,100,32,50,60 E: 32,50,100,70,65,60 …...
MySQL——Linux安装包
一、下载安装包 MySQL下载路径: MySQL :: MySQL Downloads //默认下载的企业版MySQL 下载社区版MySQL MySQL :: MySQL Community Downloads 1、源码下载 2、仓库配置 3、二进制安装包 基于官方仓库安装 清华centos 软件仓库: Index of /cen…...

MySQL学习笔记(数据类型, DDL, DML, DQL, DCL)
Learning note 1、前言2、数据类型2.1、数值类型2.2、字符串类型2.3、日期类型 3、DDL总览数据库/表切换数据库查看表内容创建数据库/表删除数据库/表添加字段删除字段表的重命名修改字段名(以及对应的数据类型) 4、DML往字段里写入具体内容修改字段内容…...
Asible管理变量与事实——管理变量(1)
Ansible简介 Ansible支持利用变量来储存值,并在Ansible项目的所有文件中重复使用这些值。这可以简化项目的创建和维护,并减少错误的数量。 通过变量,您可以轻松地在Ansible项目中管理给定环境的动态值。例如,变量可能包含下面这些…...

【微服务】------微服务架构技术栈
目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇博客主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...