ARM内核、指令集等简介

文章目录

  • 1.ARM架构学习
    • 1.1.ARM相关背景介绍
  • 2.ARM指令集
    • 2.1 A32指令集
    • 2.2 A64指令集
    • 2.3 代码举例说明
  • 3.ARM与RISC、CISC的关系
  • 4.ARM与哈佛结构、冯诺依曼结构

1.ARM架构学习

ARM即是公司名,是一家英国的公司,也是芯片名,随便嵌入式设备的发展,ARM也随之急速发展;
如何去学习ARM,作为一名合格的嵌入式er,无论是从事:
内核工程师;驱动工程师;应用工程师,都很有必要了解ARM的架构原理,掌握了ARM相关的知识再去学习UBOOT、kernel、驱动以及分析应用层的调用栈等问题才会有所突破。

1.1.ARM相关背景介绍

经常听到某芯片基于ARM核开发出来的芯片,具备什么什么功能;
如:
华为的麒麟980基于ARM-A76内核,而A76内核基于ARMV8-A架构。
NXP的ls1043a芯片基于ARMA53内核,而A53内核基于ARMV8-A架构等等。
在这里插入图片描述

根据ARM指令集所开发出来的内核,供给其他第三方厂商授权使用,常见的有A53 、A76内核等等。
常见的指令集A32 T32 A64 thumb指令集,每一个架构架构的升级,往往伴随着指令集的升级,从ARMV1-ARMV9都是这样,最典型的就是ARMV8架构的出现,实现了指令集A64,从此ARM可以支持64为指令集。

2.ARM指令集

ARM指令集有以下几种:A32 T32 A64 Neon SVE DSP Helium,在此主要说明A32与A64指令集。两者主要的区别就是A64支持64为指令集。

2.1 A32指令集

在ARMV8结构中称为A32,其实就是之前的ARM指令集,其使用的寄存器为r0-r15。

2.2 A64指令集

此指令集为ARMV8中最新引入的,为ARM架构中升级较大的一代,其使用的寄存器为x0-x30。

2.3 代码举例说明

使用同一套简单源码,利用不同的编译链进行编译,再使用objdump工具进行反汇编,在此对比下两者的区别。

#include<stdio.h>int add(int a,int b)
{return a+b;
}int main()
{int sum = add(1,2);printf("sum = %d\n",sum);return 0;
}

A32指令集,使用ARM32进行编译,对应的汇编代码:

00010444 <add>:10444:       e52db004        push    {fp}            ; (str fp, [sp, #-4]!)10448:       e28db000        add     fp, sp, #01044c:       e24dd00c        sub     sp, sp, #1210450:       e50b0008        str     r0, [fp, #-8]10454:       e50b100c        str     r1, [fp, #-12]10458:       e51b2008        ldr     r2, [fp, #-8]1045c:       e51b300c        ldr     r3, [fp, #-12]10460:       e0823003        add     r3, r2, r310464:       e1a00003        mov     r0, r310468:       e28bd000        add     sp, fp, #01046c:       e8bd0800        ldmfd   sp!, {fp}10470:       e12fff1e        bx      lr00010474 <main>:10474:       e92d4800        push    {fp, lr}10478:       e28db004        add     fp, sp, #41047c:       e24dd008        sub     sp, sp, #810480:       e3a00001        mov     r0, #110484:       e3a01002        mov     r1, #210488:       ebffffed        bl      10444 <add>1048c:       e50b0008        str     r0, [fp, #-8]10490:       e59f0014        ldr     r0, [pc, #20]   ; 104ac <main+0x38>10494:       e51b1008        ldr     r1, [fp, #-8]10498:       ebffff90        bl      102e0 <printf@plt>1049c:       e3a03000        mov     r3, #0104a0:       e1a00003        mov     r0, r3104a4:       e24bd004        sub     sp, fp, #4104a8:       e8bd8800        pop     {fp, pc}104ac:       00010520        .word   0x00010520

A64指令集,使用ARM64进行编译,对应的汇编代码:

00000000004005c4 <add>:4005c4:       d10043ff        sub     sp, sp, #0x104005c8:       b9000fe0        str     w0, [sp, #12]4005cc:       b9000be1        str     w1, [sp, #8]4005d0:       b9400fe1        ldr     w1, [sp, #12]4005d4:       b9400be0        ldr     w0, [sp, #8]4005d8:       0b000020        add     w0, w1, w04005dc:       910043ff        add     sp, sp, #0x104005e0:       d65f03c0        ret00000000004005e4 <main>:4005e4:       a9be7bfd        stp     x29, x30, [sp, #-32]!4005e8:       910003fd        mov     x29, sp4005ec:       52800041        mov     w1, #0x2                        // #24005f0:       52800020        mov     w0, #0x1                        // #14005f4:       97fffff4        bl      4005c4 <add>4005f8:       b9001fe0        str     w0, [sp, #28]4005fc:       b9401fe1        ldr     w1, [sp, #28]400600:       90000000        adrp    x0, 400000 <__abi_tag-0x254>400604:       91192000        add     x0, x0, #0x648400608:       97ffffaa        bl      4004b0 <printf@plt>40060c:       52800000        mov     w0, #0x0                        // #0400610:       a8c27bfd        ldp     x29, x30, [sp], #32400614:       d65f03c0        ret

3.ARM与RISC、CISC的关系

ARM是典型的RISC(精简指令集)代表;相对应的X86是CISC(复杂指令集)代表;这两句话也是相对的,目前指令集的发展已经有相互学习,取长补短的趋势。
在这里插入图片描述

4.ARM与哈佛结构、冯诺依曼结构

CPU最核心的三部分由控制器、存储器、运算器组成;
在这里插入图片描述
冯诺依曼架构的特点:指令与数据采用同一条总线进行连接。
哈佛结构的特点:采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,
这就允许同时取指和取操作数,从而大大提高了运算能力
两者主要的区别就是哈佛架构认为指令与数据应该是分开的,而冯诺依曼提出,指令也是数据,这就诞生出了两大典型架构。
其实现在的CPU往往采用混合架构来进行设计,即结合了两种架构的各自的特点;
在这里插入图片描述
而目前大部分的ARM-A内核也是采用了混合架构。

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

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

相关文章

ARM 之五 发展史及各时期内核(ARM1 ~ ARM11 / Cortex)介绍

很久很久以前   1978年12月5日&#xff0c;物理学家赫尔曼豪泽&#xff08;Hermann Hauser&#xff09;和工程师 Chris Curry&#xff0c;在英国剑桥创办了CPU公司&#xff08;Cambridge Processing Unit&#xff09;&#xff0c;主要业务是为当地市场供应电子设备。1979年&a…

ARM内核与架构

1、ARM架构分类 ARM架构发展至今分为 ARMv1~ARMv8 &#xff0c;不同架构之间指令集存在差异。根据架构类型又开发出不同内核&#xff0c;常用的 ARMv7 架构有三种类型的内核&#xff1a; 1&#xff09;Cortex-A&#xff1a;用于高性能应用&#xff0c;主要支持分页内存管理单…

ARM内核科普

从1985年ARMv1架构诞生起&#xff0c;到2011年&#xff0c;ARM架构已经发展到了第八代ARMv8。 Cortex-A32/35/53/57/72/73/77/78采用的都是ARMv8架构&#xff0c;这是ARM公司的首款支持64位指令集的处理器架构。 3&#xff09; ARM11之前的处理器和指令集架构 ARM11芯片之前&…

IDC发布中国低代码市场报告,得帆独立低代码市占率第一

近日&#xff0c;国际数据公司IDC公布了《2022下半年中国低代码与零代码软件市场跟踪报告》&#xff08;以下简称“报告”&#xff09;。 2022下半年中国低代码与零代码软件市场规模为15.6亿元人民币&#xff0c;得帆低代码PaaS平台凭借过硬的产品优势和深厚的客户实践经验&am…

初识ARM(内核、SoC)

对于刚接触到ARM的人来说&#xff0c;可能仅仅知道ARM是一种内核&#xff0c;是一种处理器&#xff08;CPU&#xff09;&#xff0c;但是&#xff0c;每当我们思考ARM内核是如何发挥作用、ARM处理器到底有什么用的时候&#xff0c;我们可能就会脑袋空白。当然&#xff0c;作为初…

FFmpeg解码32k大分辨率出现如下错误:Picture size 32768x32768 is invalid

最近找到一张32k的jpeg图片&#xff0c;尝试用ffmpeg来进行解码&#xff0c;命令如下&#xff1a; ffmpeg -i enflame_32768-32768-420.jpg 32.yuv结果出现Picture size 32768x32768 is invalid的错误&#xff1a; 找到报错的代码文件imgutils.c&#xff0c;以及函数&#x…

YOLOv8教程系列:四、使用yolov8仓库训练自己的图像分类数据集(含推理预测)

YOLOv8教程系列&#xff1a;四、使用yolov8仓库训练自己的图像分类数据集&#xff08;含推理预测&#xff09; 0.引言 Yolov8是最新一代的You Only Look Once目标检测模型,它由Ultralytics研究团队在2022年开发。相比于之前的Yolo版本,Yolov8在速度和精度上都有很大的提升。 …

IE实现PDF在线预览功能

背景&#xff1a; chrome、firefox、edge浏览器默认可以在线预览pdf的&#xff0c;因为chrome默认自带PDF reader的 但是IE这个微软早已经放弃垃圾浏览器&#xff0c;国内还有好多大型国有企业在用&#xff0c;所以还得做兼容 步骤 1、下载安装 Adobe Reader&#xff08; Adb…

Ubuntu64位安装Adobe Reader 9.5.5

Aodbe Reader在Linux下的效果比Foxit Reader&#xff08;福昕阅读器&#xff09;要好一些&#xff0c;尤其对于中文文档而言。本文介绍Adobe Reader在Ubuntu下的安装&#xff0c;文章《Ubuntu12.04 64位安装Foxit Reader》则介绍Foxit Reader的安装。 Aodbe Reader的安装步骤如…

Androider学C/C++—(1)环境搭建和基本操作,c语言指针练习,输出占位符

环境搭建 IDE下载地址&#xff1a; https://www.visualstudio.com/zh-hans/downloads/选择&#xff1a;Visual Studio Community 2017 适用于学生、开源和个人开发人员的功能完备的免费 IDE无脑下一步&#xff0c;然后到这里的时候注意选择。我这么选主要是因其稍微显得轻便…

实战:Windows 2008 WDS使用参考计算机创建安装映像

12.3 实战&#xff1a;使用参考计算机创建安装映像 您可以将配置好用户工作环境的计算机作为参考计算机&#xff0c;使用参考计算机创建安装映像&#xff0c;这样使用WDS服务安装的操作系统和参考计算机的环境一样。 以下将会在参考计算机上安装AdbeRdr810_zh_CN.exe软件&#…

【漏洞分析】Adobe Acrobat和Reader整数溢出漏洞(CVE-2012-0774)

0x00 前言 总体来说坑不多&#xff0c;但是对于windbg没有watchpoint功能这一点&#xff0c;真的是很坑。 0x01 简介 Adobe Acrobat和Reader在True Type Font (TTF)处理的实现上存在整数溢出漏洞&#xff0c;攻击者可利用此漏洞执行任意代码。 受影响软件版本&#xff1a; A…

solidity0.8.0的应用案例13:数字签名及应用:NFT白名单

以太坊中的数字签名ECDSA,以及如何利用它发放NFT白名单 代码中的ECDSA库由OpenZeppelin的同名库简化而成。 数字签名 如果你用过opensea交易NFT,对签名就不会陌生。下图是小狐狸(metamask)钱包进行签名时弹出的窗口,它可以证明你拥有私钥的同时不需要对外公布私钥。 …

Adobe Reader 文档无法签名_Adobe | Acrobat amp; Reader多个安全漏洞通告

0x00 漏洞概述 2020年11月03日,Adobe发布了关于Adobe Acrobat和Reader的14个安全更新,其中包括多个任意代码执行漏洞。Adobe表示目前还没有发现任何关于这些漏洞的野外攻击事件。 0x01 漏洞详情 Adobe Acrobat和Adobe Reader都是Adobe官方出品的PDF文档解决方案套件。Adobe R…

Adobe Reader 文档无法签名_如何在Mac上使用预览对PDF进行电子签名

当您通过电子邮件收到必须签名的PDF文档时&#xff0c;打印文件&#xff0c;用钢笔在虚线上签名&#xff0c;扫描签名的文档并将其发回的过程可能是一项相当繁琐的任务。幸运的是&#xff0c;苹果公司增加了使用预览功能对PDF文档进行电子签名的功能&#xff0c;该程序预先安装…

adobe reader XI 打开后闪退(或过几秒后自动退出)【终极解决方案】

Adobe Reader 11打开后闪退&#xff08;或过几秒后自动退出&#xff09;【终极解决方案】 win10系统解决2020年2月份Adobe ReaderXI自动关闭问题&#xff1a; &#xff08;以下方法任一种均可&#xff09; 方法一、更新补丁 注意&#xff1a;先请安装11.0.00正式版&#xf…

【地理图库】世界小麦产量分布

声明&#xff1a;来源网络&#xff0c;仅供学习&#xff01;

多肽合成15266-88-3产品特点介绍,Cyclo(glycyl-L-histidyl)

中文名&#xff1a;环(甘氨酰-L-组氨酰) 英文名&#xff1a;cyclo(Gly-His) CYCLO(-GLY-HIS) Cyclo(glycyl-L-histidyl) (S)-3-(1H-Imidazol-4-ylmethyl)-2,5-piperazinedione CAS&#xff1a;15266-88-3 分子式&#xff1a;C8H10N4O2 分子量&#xff1a;194.191 密度 …

Windows运行Spark所需的Hadoop安装

解压文件 复制bin目录 找到winutils-master文件hadoop对应的bin目录版本 全部复制替换掉hadoop的bin目录文件 复制hadoop.dll文件 将bin目录下的hadoop.dll文件复制到System32目录下 配置环境变量 修改hadoop-env.cmd配置文件 注意jdk装在非C盘则完全没问题&#xff0c;如果装在…