嵌入式面经-ARM体系架构-ARM体系结构理论基础

  • ARM指令集概述

    • 指令

      • 能够指示处理器执行某种运算的命令称为指令

      • 指令在内存中以机器码(二进制)的方式存在

      • 每一条指令都对应一条汇编

      • 程序是指令的有序集合

    • 指令集

      • 处理器能识别的指令的集合称为指令集

      • 不同架构的处理器指令集不同(比如ARM与X86)

      • 指令集是处理器对开发者提供的接口

    • arm指令集

      • arm指令集:所有指令(机器码)都占有32bit(4字节)存储空间

      • thumb指令集:所有指令(机器码)都占有16bit(2字节)存储空间

  • 编译原理

    • 机器码、汇编、C

      • 机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同处理器机器码不同,所以机器码不可移植

      • 汇编语言是机器码的符号化,一个汇编符号就是一条机器码,所以不同处理器汇编也不一样,所以汇编语言也不可移植

      • C语言在编译时可以使用不同的编译器将C源码编译成不同架构处理器的汇编语言,所以C语言可以移植

    • 编译流程

      • 预处理:.c.h文件、宏展开成一个文件

      • 编译:高级语言.c->汇编语言.S

      • 汇编:汇编语言.S->机器语言.o

      • 链接:多个机器语言.o链接一个可执行文件

  • ARM存储模型

    • arm数据类型

      • ARM采用32位架构,基本数据类型有8bit(1字节)、16bit(2字节)、32bit(3字节)三种

      • 数据本身是多少位在内存中的起始地址就应该是几个倍数,也就是要字节对齐

        • 比如一个变量是16bit(2字节)的数据类型,那么其在内存中起始地址就需要时2的倍数,比如,0x00、0x02、0x04

        • 比如一个变量是32bit(4字节)的数据类型,那么其在内存中起始地址就需要时4的倍数,比如,0x00、0x04、0x08

    • 字节序

      • char类型没有字节序

      • 数据0x12345678:1234高十六位、5678低十六位

      • 大端对齐:低地址存放高位、高地址存放低位

      • 小端对齐:低地址存放低位、高地址存放高位

      • ARM一般使用小端对齐

    • ARM指令存储

      • 处理器处于ARM状态时所有指令在内存的起始地址必须是4的整数倍

        • 因为所有指令(机器码)都占有32bit(4字节)存储空间

      • 处理器处于Thumb状态时所有指令在内存的起始地址必须是2的整数倍

        • 因为所有指令(机器码)都占有16bit(2字节)存储空间

  • ARM8个基本的工作模式

    • User:非特权模式,在执行上层的应用程序时处于该模式

      • 除此模式外均为特权模式(高权限)

      • 权限比较低,防止用户误操作

      • 执行上层应用程序

      • 用户态

    • FIQ:当一个高优先级中断产生后将进入该模式

      • 属于异常模式

      • 执行硬件中断请求程序

    • IRQ:当一个低优先级中断产生后将进入该模式

      • 属于异常模式

      • 执行硬件中断请求程序

    • SVC:当复位或执行软中断指令后将进入该模式

      • 属于异常模式

      • 执行初始化程序

    • Abort:当产生存取异常时将进入该模式

      • 属于异常模式

      • 例如指针错误

    • Undef:当执行未定义的指令时将进入该模式

      • 属于异常模式

      • 例如机器码错误,译码器不识别

    • System:使用和User模式相同寄存器集的特权模式

    • Monitor:为了安全而扩展出的用于执行安全监控代码的模式

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试宝典-【spring】

目录 1.Spring是什么 ? 2.Spring框架中的单例bean是线程安全的吗? 3.IOC容器是什么? 4.什么是依赖注入? 6.什么是AOP ? 7.IOC容器初始化过程? 8.Bean的生命周期? 9.BeanFactory和FactoryBean的…

代码随想录算法训练营Day59 | 503.下一个更大元素 II、42.接雨水

503.下一个更大元素 II 这题看上去有循环似乎不好做&#xff0c;其实还是蛮简单的。只需要遍历两遍来模拟循环即可&#xff0c;遍历两边还找不到结果的遍历N遍也照样找不到结果。单调栈写法仍然与 739.每日温度 相同 vector<int> nextGreaterElements(vector<int>…

vue3+ts+element-plus实际开发之统一掉用弹窗封装

vue3tselement-plus实际开发之统一掉用弹窗封装 插槽1. 官网介绍先理解 插槽、具名插槽、 作用域插槽、动态插槽名、具名作用域插槽属性和使用方法 2. 统一调用弹窗封装dome实战- 使用场景&#xff1a;- 对el-dialog进行数据动态设置- 新建一个ts文件用于统一存放组件&#xff…

感谢Cognition公司AI程序员Devin为人类程序员提供新工作:AI驯兽师AI鼓励师AI接锅侠

讲动人的故事&#xff0c;写懂人的代码 初创公司Cognition最近推出的AI程序员Devin&#xff0c;只会给人类程序员增加3类新工作。 最近&#xff0c;初创公司Cognition告诉大家一个新闻&#xff1a;他们研发了个AI程序员&#xff0c;名叫Devin。 Devin能干这些事&#xff1a; …

四川古力未来科技抖音小店:行业标杆的崛起与未来展望

在当下这个数字化、网络化的时代&#xff0c;电商行业正以前所未有的速度迅猛发展。四川古力未来科技有限公司&#xff0c;凭借其敏锐的市场洞察力和创新精神&#xff0c;成功在抖音小店平台上崭露头角&#xff0c;成为行业内的佼佼者。今天&#xff0c;我们就来一起探讨四川古…

GEE错误——Dictionary does not contain key: VV_stdDev.

错误 ComputedObject (Error) Dictionary.get: Dictionary does not contain key: VV_stdDev. Line 39: Dictionary.get: Dictionary does not contain key: VV_stdDev. 主要解决方案是检查字典中是否包含键"VV_stdDev"的拼写是否正确。如果确保拼写正确&#xff0…

3分钟阿里云数据库购买、数据库创建和连接教程

阿里云数据库怎么使用&#xff1f;阿里云服务器网aliyunfuwuqi.com整理阿里云数据库从购买到使用全流程&#xff0c;阿里云支持MySQL、SQL Server、PostgreSQL和MariaDB等数据库引擎&#xff0c;阿里云数据库具有高可用、高容灾特性&#xff0c;阿里云提供数据库备份、恢复、迁…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰与烟雾检测系统详解(深度学习模型+UI界面升级版+训练数据集)

摘要&#xff1a;本研究详细介绍了一种集成了最新YOLOv8算法的火焰与烟雾检测系统&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行性能评估对比。该系统能够在包括图像、视频文件、实时视频流及批量文件中准确识别火焰与烟雾。文章深入探讨了YOLOv8算法的原理&#xff0…

Marin说PCB之如何利用CATIA软件把器件的3D模型导出2D格式文件

步骤一&#xff0c;打开CATIA软件&#xff0c;找到器件的3D模型文件。 如下图所示就是SD卡的3D模型图了。 若是我们想要把这个3D模型导出我们实际需要的2D的DXF或者是DWG格式的话&#xff0c;我们应该如何操作呢? 1,文件&#xff0c;新建一个DAWING格式的文件, 2&#xff0c;新…

Fix a Tree(树的遍历,判断是否有环 并连成一颗树 )

题意翻译 对于下图中的树&#xff0c; 可以用数组表示为 [2,3,3,2]。这种可以表示树的数组&#xff08;即有效&#xff09;需要符合以下条件&#xff1a; 有且只有一个索引 r &#xff0c;符合pr​r 。其中顶点 r 是树的根。对于所有剩下的 n−1 个顶点 i 一定要有在 i 和 pi…

SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决 ⏱️ 创作时间&a…

基础:TCP是什么?

1. TCP 是什么&#xff1f; TCP&#xff08;Transmission Control Protocol 传输控制协议&#xff09; 是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由IETF的RFC 793 [1]定义。 TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机…

AI人员入侵识别摄像机

AI人员入侵识别摄像机是一种智能监控设备&#xff0c;利用人工智能技术辨认并报警可能的入侵行为。这种摄像机利用深度学习算法实时分析监控画面&#xff0c;识别出普通行人和潜在入侵者之间的差异&#xff0c;从而更准确地预警可能发生的安全事件。 该摄像机通过对比数据库中存…

redis 缓冲区详解(性能优化缓冲区优化)

目录 前言 客户端输入缓冲区 输出缓冲区 集群缓冲区 全量复制缓冲区问题 增量复制缓冲区问题 前言 在我的《Redis 为啥那么快》这篇文章中&#xff0c;详细总结了Redis 为啥那么快。今天当我要详细阐述Redis 的缓冲区时&#xff0c;意识到应该加上Redis 的缓冲区。我们假…

CC攻击详细

CC攻击是DDoS攻击的其中一种&#xff0c;是目前应用层攻击的主要手段之一&#xff0c;相比其它的DDoS攻击CC似乎更有技术含量一些。CC攻击借助代理服务器生成指向目标系统的合法请求&#xff0c;实现伪装和DDoS。我们都有这样的体验&#xff0c;访问一个静态页面&#xff0c;即…

c++基础语法—————默认成员函数

文章目录 一、构造函数&#xff08;初始化&#xff09;1.构造函数的名称与类名相同&#xff0c;没有返回类型&#xff0c;可以有参数。2.对象实例化时&#xff0c;编译器自动调用构造函数进行初始化3.若类中没有显示定义一个用户的构造函数&#xff0c;编译器则会自动生成一个默…

MCM箱模型的运行及结果分析,MCM建模技巧与参数设置、EKMA曲线绘制、大气O3来源解析

目录 一、大气中O3形成知识基础、MCM和Atchem 2原理及Linux系统安装 二、MCM建模、数据输入、模型运行及结果输出 三、O3形成途径、生成潜势及其敏感性分析 EKMA曲线及大气O3来源解析 更多应用 臭氧污染不仅对气候有重要影响&#xff0c;而且对人体健康、植物生长均有严重…

大门对楼梯,怎么办?

​ 中国是一个非常重视风水的国家&#xff0c;风水学发扬和流传已有几千年的历史&#xff0c;很多懂风水的人都知道&#xff0c;大门风水是其中非常重要的一环&#xff0c;因为大门风水直接影响全家人的各种运势。大门风水好&#xff0c;能帮助你一臂之力&#xff1b;若大门风…

加密货币在网络违法犯罪活动中的利用情况调查

一、调查背景 区块链基于分布式共识和经济激励等手段&#xff0c;在开放式、无许可的网络空间中&#xff0c;为价值的确立、存储、转移提供了新的解决方案。然而随着加密生态在过去若干年的快速发展&#xff0c;加密货币也越来越多地被用于各类风险活动&#xff0c;为网络赌博…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的&#xff0c;因为缓存雪崩和穿透&#xff0c;是缓存最大的两个问题&#xff0c;要么不出现&#xff0c;一旦出现就是致命性的问题&#x…
最新文章