【ARM体系结构】之数据类型约定与工作模式

news2025/1/16 8:55:16

1、RISC和CISC的区别

1.1 RISC : 精简指令集

使用精简指令集的架构:ARM架构	RISC-V架构	PowerPC架构	MIPS架构

	ARM架构 :目前使用最广泛的架构,ARM面向的低端消费类市场
	RISC-V架构 :第五代,精简指令集的架构, RISC-v架构开源,
    PowerPC架构 :Powerpc芯片凭借其出色的性能和高度整合和技术先进特性在网络通信应用,工业控制应用,家用数字化,网络存储领域,军工领域,电力系统控制等都具有非常广泛的应用。
    MIPS架构 : MIPS处理器在数字电视、网络应用、机顶盒、ADAS、物联网等领域有广泛应用。
    
RISC : 精简指令集特点:
	精简指令集使用了一些比较常用,并且相对简单的指令
	作为精简指令集,
	精简指令集的指令的宽度和指令的周期固定。
	
	指令的宽度:将指令编译生成机器码之后,指令机器码占用内存空间的大小。
			ARM指令指令的宽度是32bits(4Byte).
	指令的周期:执行一条指令所需要的时间,ARM指令大多数都是单周期的指令。
			周期跟处理器的主频有关,T(周期) = 1s / F(主频)
    
linux@ubuntu:~/ARM$ arm-linux-gnueabihf-gcc -marm hello.c -o hello
	// arm-linux-gnueabihf-gcc : arm的交叉编译器,可以将程序编译生成ARM可执行程序
	// -marm : 编译生成arm的汇编指令
linux@ubuntu:~/ARM$ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=43f6cb611fae0c48a9d0f69afa162ca9b4d01628, with debug_info, not stripped
linux@ubuntu:~/ARM$ arm-linux-gnueabihf-objdump -D hello > hello.dis 
	// arm-linux-gnueabihf-objdump交叉编译器中的反汇编的命令:
	// 将可执行程序反汇编生成反汇编文件,反汇编文件的后缀为.dis
000103d0 <main>:
内存地址     汇编指令机器码    反汇编指令
   103d0:	e92d4800 	push	{fp, lr}
   103d4:	e28db004 	add	fp, sp, #4
   103d8:	e24dd008 	sub	sp, sp, #8
   103dc:	e50b0008 	str	r0, [fp, #-8]
   103e0:	e50b100c 	str	r1, [fp, #-12]
   103e4:	e300044c 	movw	r0, #1100	; 0x44c
   103e8:	e3400001 	movt	r0, #1
   103ec:	ebffffbb 	bl	102e0 <puts@plt>
   103f0:	e3a03000 	mov	r3, #0
   103f4:	e1a00003 	mov	r0, r3
   103f8:	e24bd004 	sub	sp, fp, #4
   103fc:	e8bd8800 	pop	{fp, pc}

1.2 CISC : 复杂指令集

使用复杂指令集的架构:X86和X64架构,电脑的CPU一般使用的都是复杂指令集。

	复杂指令集更加注重指令的功能性,指令的周期和指令的宽度不固定。
linux@ubuntu:~/ARM$ gcc hello.c -o hello
linux@ubuntu:~/ARM$ objdump -D hello > hello.dis
	// objdump反汇编的命令:将可执行程序反汇编生成反汇编文件,反汇编文件的后缀为.dis
	
0000000000001149 <main>:
内存地址     汇编指令机器码           反汇编指令
    1149:	f3 0f 1e fa          	endbr64 
    114d:	55                   	push   %rbp
    114e:	48 89 e5             	mov    %rsp,%rbp
    1151:	48 83 ec 10          	sub    $0x10,%rsp
    1155:	89 7d fc             	mov    %edi,-0x4(%rbp)
    1158:	48 89 75 f0          	mov    %rsi,-0x10(%rbp)
    115c:	48 8d 3d a1 0e 00 00 	lea    0xea1(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    1163:	e8 e8 fe ff ff       	callq  1050 <puts@plt>
    1168:	b8 00 00 00 00       	mov    $0x0,%eax
    116d:	c9                   	leaveq 
    116e:	c3                   	retq   
    116f:	90                   	nop

2、ARM数据类型的约定

2.1 ARM-v7架构的数据类型的约定

字节 		Byte		8bits(1字节)
半字		Half word	16bits(2字节)
字		 Word		 32bits(4字节)
双字		Double word	64bits(8字节)

2.2 ARM-v8架构的数据类型的约定

字节 		Byte		8bits(1字节)
半字		Half word	16bits(2字节)
字		 Word		 32bits(4字节)
双字		Double word	64bits(8字节)
四字 		Quad word   128bits(16字节)

3、ARM处理器的工作模式

3.1 Cortex-A7核的工作模式

Cortex-A核有9中工作模式,当ARM核处于不同的工作模式下执行的是不同的代码,
执行代码之后可以完成特定的功能。

在这里插入图片描述

安全监控模式:monitor mode ----> 运行安全相关的代码
HYP mode : 对虚拟化技术的支持

3.1.1 异常源

异常模式异常源备注
FIQ异常模式FIQ类型的异常源当发生FIQ类型的异常源,会导出处理器进入到FIQ异常模式下。FIQ类型的异常源指很多异常事件。
IRQ异常模式IRQ类型的异常源当发生IRQ类型的异常源,会导出处理器进入到IRQ异常模式下。IRQ类型的异常源指很多异常事件。比如按键中断,定时器中断…
SVC模式复位信号看门狗复位,上电复位,复位按键复位
软中断指令(SWI)执行软中断指令时也会让处理器进入到SVC模式下
Undef未定义异常模式Undef未定义异常源译码器翻译指令时失败,或者译码器不认识的指令
Abort异常模式data Abort取数据发生异常
Prefetch Abort取指令发生异常
导致处理器进入到对应的异常模式下的事件统称为异常源。

5种异常模式对应着7种异常源,异常源具有优先级,复位的优先级最高,FIQ的优先级高于IRQ。

在这里插入图片描述

3.2 Cortex-M4核的工作模式

Cortex-M4核有两种工作模式:
	线程模式:主要执行的是用户的代码及主函数内的代码
	异常模式:主要执行的异常代码,比如中断处理的代码,复位异常,硬件异常,按键中断......

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这样定义通用人工智能

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 人类解决问题的途径,大体可以分为两种。一种是事实推理,另一种是事实验证。 为什么只是两种分类,因为根据和环境的交互与否。 事实推理解释为当遇到事件发生的时候,思考的过程。可以使用概率模型,或者更复杂的模型(目前没…

Out of Vocabulary处理方法

Out of Vocabulary 我们在NLP任务中一般都会有一个词表&#xff0c;这个词表一般可以使用一些大牛论文中的词表或者一些大公司的词表&#xff0c;或者是从自己的数据集中提取的词。但是无论当后续的训练还是预测&#xff0c;总有可能会出现并不包含在词表中的词&#xff0c;这…

(教程)如何在BERT模型中添加自己的词汇(pytorch版)

来源&#xff1a;投稿 作者&#xff1a;皮皮雷 编辑&#xff1a;学姐 参考文章&#xff1a; NLP | How to add a domain-specific vocabulary (new tokens) to a subword tokenizer already trained like BERT WordPiece | by Pierre Guillou | Medium https://medium.com/pi…

ROS2机器人编程简述humble-第三章-BUMP AND GO IN C++ .3

简述本章项目&#xff0c;参考如下&#xff1a;ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1流程图绘制&#xff0c;参考如下&#xff1a;ROS2机器人编程简述humble-第三章-COMPUTATION GRAPH .2然后&#xff0c;在3.3和3.4分别用C和Python编程实现&am…

Bus Hound 工具抓取串口数据(PC端抓取USB转串口数据)

测试环境&#xff1a; PC端 USB转串口 链接终端板卡串口 目标&#xff1a;抓取通信过程中的通信数据 工具介绍&#xff1a;Bus Hound是是由美国perisoft公司研制的一款超级软件总线协议分析器&#xff0c;它是一种专用于PC机各种总线数据包监视和控制的开发工具软件&#xff0c…

通信原理简明教程 | 数字调制传输

文章目录1 二进制数字调制和解调1.1 二进制数字调制的基本原理1.2 二进制数字调制信号的特性1.3 解调方法2 二进制差分相移键控2.1 2PSK的倒π现象2.2 2DPSK调制和解调3 二进制调制系统的抗噪性能3.1 2ASK系统的抗噪声性能3.2 2FSK系统的抗噪声性能4 二进制数字调制系统性能比较…

服务器配置定时脚本 crontab + Python;centos6或centos 7或centos8 实现定时执行 python 脚本

一、crontab的安装 默认情况下,CentOS 7中已经安装有crontab,如果没有安装,可以通过yum进行安装。 yum install crontabs 二、crontab的定时语法说明 corntab中,一行代码就是一个定时任务,其语法结构可以通过这个图来理解。 字符含义如下: * 代表取值范围内的数字 /…

Linux内核驱动初探(三) 以太网卡

目录 0. 前言 1. menuconfig 2. 设备树 0. 前言 这次的网卡驱动就比较顺利&#xff0c;基本就是参考 4.19.x 内核以及 imx6qdl-sabrelite.dtsi、imx6qdl-sabreauto.dtsi 中的设备树&#xff0c;来设置以太网各项参数。 1. menuconfig 其实笔者接手的时候&#xff0c;网口这…

本质安全设备标准(IEC60079-11)的理解(三)

本质安全设备标准&#xff08;IEC60079-11&#xff09;的理解&#xff08;三&#xff09; 对于标准中“fault”的理解 第一&#xff0c;标准中对fault的定义是这样的&#xff1a; 3.7.2 fault any defect of any component, separation, insulation or connection between c…

C++空间命名

前言 提示&#xff1a;由于C是在C语言基础之上&#xff0c;增加了很多新的东西。 本文讲解命名空间的具体使用方法 文章目录 目录 前言 一、命名空间 二、命名空间定义 1.嵌套性 2.和并性 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

【华为上机真题】区间交集

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

CleanMyMac X真的有必要买吗?CleanMyMac2023最新版下载

CleanMyMac X是一款集所有功能于一身的先进程序卸载清理器&#xff0c;只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。CleanMyMac为您喜爱的东西腾出空间。它不仅有着赏心悦目的UI交互页面&#xff0c;更有着强大的“超能力…

HTB-BountyHunter

HTB-BountyHunter信息收集开机提权信息收集 80端口的网页如下。 注意有一个db.php&#xff0c;虽然现在打不开&#xff0c;估计后面会用上。 还有resources里面的readme文件。 完成了tracker提交编写和developer组权限。没有完成portal的test用户禁用、选择哈希加密的密码以…

Webshell(网页后门)

数据来源 本文仅用于信息安全的学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 一、Webshell简介 01 什么是 Webshell webshell是以 asp、php、jsp或者cgi等网页文…

【数据结构与算法】第十九篇:回溯,剪枝,N皇后问题

知识导航一、回溯思想概述二、八皇后问题引入八皇后问题的解决思路(1)思路一&#xff1a;暴力出奇迹(2&#xff09;思路二&#xff1a;根据题意减小暴力程度(3&#xff09;思路三&#xff1a;回溯法剪枝三、四皇后问题八皇后问题四、N皇后的实现1.实现方法一&#xff1a;利用数…

程序员的自我修养第七章——动态链接 (上)

继续更新《程序员的自我修养》这个系列&#xff0c;主要是夏天没把它看完&#xff0c;补上遗憾。本篇来自书中第七章。 再说动态链接前&#xff0c;我们先阐明为什么要动态链接&#xff1a; 动态链接的产生来自静态链接的局限性。随着静态链接的发展&#xff0c;其限制也越来越…

十二、创建和管理表

文章目录一、基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 数据类型及数据库操作二、创建表三、查看表结构3.1 使用 SHOW COLUMNS 语句查看3.2 使用 DESCRIBE 语句查看3.3 查看表详细结构语句 SHOW CREATE TABLE四、修改表结构4.1 添加新字段和修改字段定义4.2 修改字…

用户画像增量更新系列二

进行用户日志数据处理 原始日志数据 结果: 思路&#xff1a;按照user_id的行为一条条处理&#xff0c;根据用户的行为类型判别。 由于sqlDF每条数据可能会返回多条结果&#xff0c;我们可以使用rdd.flatMap函数或者yield 格式&#xff1a;["user_id", "action…

总结:计算机中字符串比较大小的规则

总结&#xff1a;计算机中字符串比较大小的规则一背景&#xff1a;二Unicode编码表&#xff1a;字符越靠后&#xff0c;对应的十进制值越大三单个字符之间比较规则&#xff1a;四案例演示&#xff1a;单个字符与单个字符之间比较大小1.前提&#xff1a;汉字“一”与汉字“万”&…

Elasticsearch:Elasticsearch percolate 查询

Elasticsearch 通常如何工作&#xff1f; 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档。 我们构造一个匹配或术语查询作为输入&#xff0c;匹配查询的文档作为结果返回。 但这不是 percolate query 的情况..... 让我们看看这篇文章中的 p…