arm体系结构概述和编程模型

2023-11-04

1、arm体系结构的版本

1、arm1~6

2、arm体系的变种

1、T 系列:Thumb指令集,可以支持Thumb指令集

2、M系列:支持长乘法,32位*32位生成64位数据,长乘加指令,再加上32位数据

3、E系列:增强型DSP指令,增强一些典型的DSP算法的性能

4、J系列:java加速器,java代码运行速度提高了8倍,功耗降低了80%

5、SIMD系列:流媒体的处理性能提高了4倍,主要应用于流媒体

3、arm体系版本的命名方式

ARMv+指令集版本号(1~6)+变种系列字符+xP(排除某种指令的支持)

4、ARM9系列特点

 

5、ARM的处理器模式

1、用户模式User:正常执行程序的模式

2、快速中断模式FIQ:用于高速数据传输和通道处理

3、外部中断模式IRQ:用于通常的中断处理

4、特权模式SVE:供操作系统使用的一种保护模式

5、数据访问中止模式Abort:用于虚拟存储以及存储保护

6、未定义指令中止模式underfined:用于支持通过软件方针硬件的协处理器

7、系统模式System:用于运行特权级的操作系统任务

除用户模式外,其他都为特权模式,可以任意的进行模式切换,访问系统资源。除系统模式之外,都被称为异常模式。

应用程序进行模式切换时是不能直接切换的,需要产生异常处理才可以切换异常模式,在异常处理中进行模式切换.

每组异常模式都有一组寄存器,以保证进入异常模式时用户模式下的寄存器不被破坏.

系统模式不是通过异常处理进入的,时可以直接切换的.

arm拥有37个寄存器,包括31个通用寄存器(32位),6个状态寄存器(32位,但是目前只使用了12位).

 

R0~R14 + PC :16个通用寄存器

R0~R7未备份寄存器:所有模式下都共用一个,所以切换模式时数据容易被破坏

R8~R14 备份寄存器:

R8~R12,每个寄存器对应两个寄存器,一种是快速中断的,一种是其他的。这样在响应快速中断时就不需要保存现场和恢复现场,从而使中断响应快速

R13~R14,每个寄存器对应6个不同的寄存器,其中用户模式和系统模式时共用的,

R13:一般来说R13都作为栈指针,但是不强制。进入异常模式时,将需要使用的寄存器保存在R13所知的栈中,退出异常程序时,再进行出栈操作。

R14:被称为连接寄存器LR,有两种作用:1、存放子程序的返回地址,调用子程序将PC保存,返回时将寄存器赋值给PC 2、异常模式产生时,将PC入栈,异常模式返回时,将寄存器地址赋给PC

PC 程序计数器:又被称为R15,因为arm使用的是流水线机制,所以正确的读取PC的值一般都是下两个指令的地址,即当前正在执行的指令加8个字节。即三级流水线

arm指令时按字对齐的,所以写入PC的值第0位和第1位应该是0。知道为啥吗?因为可以被4整除,而4就是100

CPSR寄存器:程序状态寄存器,可以在任何模式下被访问,在异常模式下都有一个SPSR物理状态寄存器,用来在异常发生时,存储CPSR的值。从异常返回时,恢复SPSR的值。

 

Q标志位,表示增强型DSP指令是否发生溢出。

I F 中断禁止位,I表示禁止(1)IRQ中断,F标志禁止(1)FIQ中断

T表示执行的是ARM指令(0)还是Thumb指令(1)

M表示处理器模式

6.arm体系中的中断

 

异常中断:

 

异常中断的响应过程:1、保存处理器当前状态,中断屏蔽位、以及各条件标志CPSR——》SPSR。

 2、设置当前CPSR中的相应的位,包括设置模式,禁止中断等。

 3、设置LR的值为返回地址

4、将PC设置为异常中断的中断向量地址。从而跳转到相应的地方去执行

异常中断程序的返回:1、SPSR-》CPSR

2、将LR(R14)->PC

 

7、存储系统

Arm32位的系统地址空间大小最大为232个字节,但是因为寻址是4字节对齐,所以只能寻址为2e30个单元,每个单元4个字节,也可以看作为2e31个2字节单元

在字单元中,这4个字节,哪一个时高位地址,哪一个时低位地址,则有两种不同的格式:大端(高位低地址)和小端(高位高地址)

 

如果访问地址单元没有按照字对齐原则,即4字节对齐,则被称为非对齐的存储访问操作

如果访问的是指令,则结果要么不可预知,要么指令地址的低两位被忽略,但是这全靠系统,如果系统存在非对齐访问时的处理,则会忽略

对于非对齐的数据访问:1、执行结果不可预知

    2、忽略字单元地址的低两位的值

指令预取:CPU执行当前指令时,可以从存储器预取其后的若干条指令,具体多少,看arm的实现

自修改代码:代码在执行过程中可能会修改自身(主存中的),这是预取则显得不可靠

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arm体系结构概述和编程模型 的相关文章

  • 202310读书笔记|《大白鲸原创图画书优秀作品:虾一跳》——蝴蝶效应之最,你值得一读

    202310读书笔记 大白鲸原创图画书优秀作品 虾一跳 蝴蝶效应之最 你值得一读 大白鲸原创图画书优秀作品 虾一跳 作者 耿彦红 文 齐海潮 图 由虾一跳的连锁反应构成了整本书的故事脉络 很生动 故事及叙述的重复都不冗杂 反而很朗朗上口 并
  • 《C++ Primer》读书笔记第十六章-1-定义模板

    笔记会持续更新 有错误的地方欢迎指正 谢谢 这一章特别实用 神器 gt 模板 泛型编程能处理在编译之前类型不知道的情况 在编译时获知类型 比如我们学过的容器 迭代器和算法都是泛型编程 模板是C 中泛型编程的基础 记住 一个模板就是一个创建类
  • 《编程珠玑》--读书笔记12章:取样问题

    第十二章 作者提出了一个问题 程序的输入包含两个整数m和n 其中m lt n 输出是0 n 1范围内的m个随机整数 不允许重复 有两种方法达到目的 1 思路 从r个剩余的整数中选出s个 以概率s r来选择下一个数 比如 m 2 n 5 选择
  • 《拖延心理学》

    一 拖延处理技巧汇编 1 确立一个可操作性的目标 可观察 具体而实在的 而不是那种模糊而抽象的目标 不是 我要停止拖延 而是 我要在9月1日之前打扫和整理我的车库 2 设定一个务实的目标 不要异想天开 而要从小事做起 不要过于理想化 而是要
  • 《开拓者FPGA开发指南》读书笔记——Verilog HDL语法

    Verilog HDL语法 6 1 Verilog和C的区别 6 2 Verilog基础知识 6 2 1 Verilog的逻辑值 6 6 2 Verilog的标识符 6 2 Verilog概述 6 2 1 Verilog简介 6 2 2 V
  • C++ Primer笔记——tuple类型

    tuple类型 C Primer 17 1 tuple类型 P636 tuple是一种定义在标准库中的类似于pair的模板 pair的成员为两个不同的类型 tuple同样要求成员类型不同 但是tuple可以有任意数量的成员 一 定义 定义一
  • 写正确的整数二分

    二分 第一篇二分搜索论文是 1946 年发表 然而第一个没有 bug 的二分查找法却是在 1962 年才出现 中间用了 16 年的时间 不知道哪里看的 整数二分 yxc二分模板 二分的本质是二段性不是单调性 当想找不满足性质的边界值 红色区
  • <稀缺-我们是如何陷入贫穷与忙碌的> 摘要

    2015 07 08 10 12 lt 稀缺 我们是如何陷入贫穷与忙碌的 gt 摘要 这本书分析了稀缺的内在来源和所造成的影响 列举了许多例子 下面我把它的核心思想记录一下 稀缺心态是一切稀缺的根源 资源稀缺并不可怕 就怕有稀缺心态 以后简
  • 做你自己

    2017 03 06 2017 03 10将彼得 巴菲特的书籍 做你自己 个股神巴菲特送给儿子的人生礼物 读完了 感受颇深 沃伦 巴菲特的名言 出生时嘴里含着的金汤匙 最后可能会变成扎在背上的金匕首 考虑不周的赠与会浇灭一个人的雄心并枯竭他
  • oracle表空间迁移transport_tablespace的使用

    问题描述 如果某个表空间有多个用户 那么我们在迁移的时候如果按用户导出导入的话 那将是一个麻烦费事的活 这个时候我们可以通过transport tablespace参数进行表空间迁移 达到一次性迁移整个表空间的目的 下面通过一个实验来讲解整
  • c陷阱与缺陷

    第一章 词法陷阱 1 这一章没有太多 干货 唯一比较有趣的就是 1 3 语法分析中的 贪心法 所讲内容 这个 贪心 就是编译器会读入字符 如果能新读入的字符和之前所读入字符能组成符号 则编译器会继续读入下一个字符 直到读入的字符不能和之前的
  • LeetCode 101Pro

    LeetCode 101 本文档是对LeetCode101中题目的详细解释和扩展 文章目录 LeetCode 101 第一章 题目分类 第二章 最易懂的贪心算法 2 1 算法解释 2 2 分配问题 455 分发饼干 135 分发糖果 2 3
  • 深度学习框架Pytorch快速开发与实践

    决定用两个星期读完这本书 并自己用Pytorch搭建一个模型 2019 8 5 第一章深度学习介绍 明确学习目标 深度学习难点不是深度学习本身 难的是你要吃透问题 如何用深度学习的逻辑去思考你自己的问题 有针对性地设计模型 难的是你有分析问
  • 《曾国藩家书》读书手记(修身篇一)

    曾国藩被章太炎评价为 誉之则圣相 谳之则元凶 为什么有这样的评价呢 我们可以看出曾国藩这个人褒贬不一 不过毛和蒋对于曾国藩都是推崇备至 毛说过 吾近于人 独服于曾国藩 看来曾国藩还是有可取之处的 尤其是他的家书 很多人评价甚高 一 修身篇
  • 《学会提问》-批判性思维

    这本书名为学会提问 但实际内容是讲解如何训练批判性思维能力 如何通过提问 来质疑别人的观点 选择正确的论证 来形成自己的理性决策 批判性思维的最终结果就是要求一个人虚怀若谷地接纳各种观点 理性评判这些观点 然后在理性判断的基础上决定采取哪些
  • 读书笔记 摘自:《思维导图攻略:快速上手与落地实践》

    思维导图攻略 快速上手与落地实践 王健文 出版 2019 01 01 7 3万字 内容提要 无落地 不导图 思维导图的学习并不在于思维导图的绘制本身 而是在于实际应用和思维提升 第一章 精英人士自我提升的思维利器 第一节 提升大脑学习力的秘
  • extern详解

    extern 关键字 extern是C语言中的一个关键字 一般用在变量名前或函数名前 作用是用来说明 此变量 函数是在别处定义的 要在此处引用 extern这个关键字大部分读者应该是在变量的存储类型这一类的内容中 遇到的 下面先分析C语言不
  • 分布式系统的特征

    分布式系统概念与设计 读书笔记 第一章 第一章 分布式系统的特征 1 0 简介 分布式系统是其组件分布在联网的计算机上 组件之间通过传递消息进行通信和动作协调的系统 该定义引出了分布式系统的下列重要特征 组建的并发性 缺乏全局时钟 组件故障
  • 【读书笔记】-《工业互联网-技术与实践》

    前言 现在的技术发展潮流 基本上往大数据 人工智能的方向发展 但是归根结底 是什么推动了这些技术产业的发展 是什么支撑的 主要说的话 这和互联网的发展息息相关 也就是说现在一些主要的发达国家是如何拓展先技术新领域 并且如何把这些新技术应用到
  • 【华为数据之道学习笔记】5-5结构化数据入湖

    结构化数据是指由二维表结构来逻辑表达和实现的数据 严格遵循数据格式与长度规范 主要通过关系型数据库进行存储和管理 触发结构化数据入湖的场景有两种 第一 企业数据管理组织基于业务需求主动规划和统筹 第二 响应数据消费方的需求 结构化数据入湖过

随机推荐

  • 用大数乘法计算阶乘

    在比较小的范围内阶乘可以递归实现 而求更大的数的阶乘一般用到long long长整形数 不过 即使这样 在耗时和再大些的阶乘上力有不逮 所以 在输入比较大的情况下 用大数乘法计算阶乘是最好的选择 计算过程分2步 1 输入字符串s 将它的值保
  • 瑞吉外卖【用户移动端】

    用户移动端 一 手机验证码登录 1 短信发送 1 1 短信服务介绍 1 2 阿里云短信服务 2 手机验证码登录 2 1 需求分析 2 2 数据模型 2 3 代码开发 二 菜品展示 购物车 下单 1 用户地址薄 1 1 需求分析 1 2 数据
  • VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

    摘要 在这项工作中 我们解决了引用分割的挑战性任务 引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象 因此 为了在图像中的所有实例中找到目标实例 模型必须对整个图像有一个整体的理解 为了实现这一点 我们将引用分割重新
  • kali Linux的优点与缺点

    Kali Linux简介 用于数字取证操作系统 Kali Linux是基于Debian的Linux发行版 设计用于数字取证操作系统 由Offensive Security Ltd维护和资助 最先由Offensive Security的Mat
  • 使用X-WIN32 EXCEED等软件显示远程LINUX桌面的设置

    href http blog bcchinese net shiaohuazhang Services Pingback aspx rel pingback gt 使用X WIN32 EXCEED等软件显示远程LINUX桌面的设置 RED
  • 使用思维导图,优雅的完成自己的代码

    我自己常常在写代码的时候 会突然搞不清变量用来干嘛的 也会被理不清的逻辑搞得自己异常烦躁 我甚至常常暗示自己我不适合写代码 思维总是那么不清晰 直到我发现了思维导图的妙用 最开始使用思维导图的时候 我其实是用来记知识点的 然而某一刻就灵光一
  • Scrum是用来发现问题的

    原文链接作者 Mark Levison 机械的Scrum对比真正的Scrum 差别在哪里 最近 我和一个朋友聊到了他们公司实施Scrum的情况 他们有些迷茫 在实施Scrum之前 他们经常为了访问一台测试机而不得不等上一个小时 甚至更多时间
  • 单例模式 - 饿汉式与懒汉式详解

    什么是单例模式 对于一个软件系统中的某些类而言 只有一个实例很重要 就像Windows中的任务管理器一样 只能打开一个 如果不适用机制对窗口对象进行唯一化 必定会弹出多个窗口 如果这些窗口显示的内容完全一致 则是重复对象 浪费内存资源 如果
  • H2数据库攻略之一-简介

    1 H2数据库介绍 常用的开源数据库 H2 Derby HSQLDB MySQL PostgreSQL 其中H2 HSQLDB类似 十分适合作为嵌入式数据库使用 其它的数据库大部分都需要安装独立的客户端和服务器端 H2的优势 1 h2采用纯
  • jQuery qTip2提示插件 (示例图,API)

    author YHC 首先介绍一下 主要的作用 用作网页中的提示 例如新手入门的导航 看下图你就明白了 当然这个插件在提示上功能非常丰富 下面主要介绍下载地址 以及入门的一个最小的 例子 qTip2官网下载地址 qTip2官网推荐下载地址
  • Android webView去除默认边框

    Android WebView无论怎么修改它的属性都会存在一定的边距 这是因为 HTML 的 body 标签默认存在一定边距 修改 webView 的属性并没有作用 解决办法 修改 html 代码 html data 原本需要加载的html
  • KaTeX

    KaTeX LaTeX数学公式编辑手册 只需要在第三列写法前后分别加上 就可以转换为符号 但需注意 CSDN的使用的是 KaTeX KaTeX KATE X数学公式 而不是 LaTeX LaTeX LATE X 两者会有些许区别 如果有
  • 漂亮的计算器页面 html,html+css实现一个好看的计算器实例代码

    最终效果如下图 2 有bug 就是整数后点击 号结果正确 如果小数后面点击 的话结果就错误 其他都正常 求指点 input的value是string类型的 在JS中改如何正确处理下图 1中的if部分 图 1 图 2 HTML代码如下 简单的
  • 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了

    由于文章有点多 并且发的文章也不是一个系列一个系列发的 不过我的文章大部分都是围绕着 数据结构 算法 计算机网络 操作系统 Linux 数据库 这几个方面发的 为了方便大家阅读 我整理了一波 不过公众号可以说是不支持修改文章 因为我决定每两
  • Java环境从删除到重装

    Java环境从删除到重装 前言 须知 如何完全删除jdk 安装jdk 前言 今天由于一些原因把Java环境删除了 怎么装都装不好 遇到了很多错误 在网上找了好多解决办法之后终于弄好了 所以写成一份Java环境从删除到重装 给各位不小心删除J
  • Centos7下基于jdk11 安装RocketMQ

    1 简介 RocketMQ是阿里巴巴中间件团队自研的一款高性能 高吞吐量 低延迟 高可用 高可靠 具备金融级稳定性 的分布式消息中间件 开源后并于2016年捐赠给Apache社区孵化 目前已经成为了 Apache顶级项目 当前在国内被广泛的
  • 用html+js实现代码背景墙特效【建议收藏】

    在csdn里面 有些博主的主页非常的帅 就是代码从上往下掉的特效 那么这种效果我们作为程序员该如何去写出来呢 不用担心 这篇博客就分享如何创建一个代码背景墙 1 效果展示 2 代码分享
  • java.io.FileNotFoundException: http://www.xxxxx.net:8080/test/test/ 403错误

    POST请求错误内容 java io FileNotFoundException http www xxxxx net 8080 test test at libcore net http HttpURLConnectionImpl get
  • python 中的六种“复制”方法

    以列表为例 方法一 直接变量赋值 将 li 赋值给变量 li1 打印他们的id会发现 他们的id是一样的 即是 li 和 li1 这两个变量在python中是同一个内存地址 对他们任何一个变量进行修改 另外一个会跟着变化 li 1 2 3
  • arm体系结构概述和编程模型

    1 arm体系结构的版本 1 arm1 6 2 arm体系的变种 1 T 系列 Thumb指令集 可以支持Thumb指令集 2 M系列 支持长乘法 32位 32位生成64位数据 长乘加指令 再加上32位数据 3 E系列 增强型DSP指令 增