ARM相关概念

ARM课程大纲

ARM相关的基本概念

机器码

计算机能够识别由1和0组成的编码格式
汇编:将汇编文件转换为二进制文件(.bin/.elf)

汇编指令

是一条具备特殊功能的指令
编译:生成汇编文件
int a = 10;      ------>    mov r0 #10    编译 

汇编指令集

由多条不同功能的汇编指令组成的集和

架构

由不同的汇编指令集设计出来的架构x86汇编指令集设计出x86-64架构
arm汇编指令集设计出arm架构arm v1-v6架构     目前已经淘汰
arm v7架构:只支持32位ARM指令集的架构   ----> stm32mp157a
arm v8架构:支持64位ARM指令集的架构,并且向下兼容arm v7架构
arm v9架构:最新的架构,未来十年的发展趋势四大主流芯片架构:x86架构、       ARM架构、       RISC-V架构、       Mips架构inter         苹果、华为       nivida、三星       龙芯中科(龙架构)不开源           不开源           开源          、主流的芯片厂商:ST、NXP、海思(麒麟)、高通、MTK(联发科)、TI(德州仪器)、SAMSUNG(Exynos猎户座)新唐科技、展瑞、瑞芯微、中芯国际、阿里(平头哥)、小米(澎湃)、全志兆易创新(GD32)、龙芯中科(电脑cpu)

内核

基于不同的架构设计出来不同的内核ARM架构 ---> Cortex-A核     Cortex-M核CPU:中央处理器,可以叫MPU MCU SOC
MCU:微控制器,一般指的是裸机,无法运行像Linux这种大型的操作系统的,但是它可以运行os实时操作系统(FreeRTOS、lite-os、RT Thread)
MPU:微处理器,一战指的是可以跑大型的操作系统的处理器
SOC:片上系统ARM公司基于ARM指令集设计出ARM架构,ARM公司再基于ARM架构设计出了Cortex-A7内核
ARM将Cortex-A7内核授权给了ST(意法半导体)公司,ST公司基于Cortex-A7内核研发出了STM32MP157AAA芯片
ST公司将这个芯片卖给了华清远见,华清远见研发部基于STM32MP157A芯片添加很多的外设
最后构成了开发板

精简指令集和复杂指令集的区别

精简指令集 - RISC

汇编指令集相对于来说比较简单,易阅读
特点:指令的宽度和指令的周期固定
指令宽度:一条指令所占的空间,arm-v7架构的指令占32位(4个字节)的空间
指令周期:一条指令执行需要的时间精简指令集:ARM架构、RISC-V、Mips架构、PowerPC架构

复杂指令集

特点:指令的周期和指令的宽度不固定复杂指令集:x86架构

验证

复杂指令集

精简指令集

ARM处理器具备默认的汇编指令集 -> Thumb指令
Thumb指令集是ARM指令集的子集(儿子)
Thumb指令集每条指令占16位,及2字节的空间
ARM指令集每条指令占32位,及4字节的空间

ARM处理器的工作模式

Cortex-M核的工作模式

两种模式:线程模式、异常模式

Cortex-A核的工作模式

ARM v7架构的寄存器组织

存储类型

在c语言中我们学习过的6种存储类型?auto static const extern volatile register
register:访问速度快,不允许取地址
volatile:防止编译器对代码进行优化,直接从内存中取最新的值核内寄存器:不存在地址,只允许用编号访问,R0-R15 CPSR SPSR
定义变量的过程:存储类型+数据类型+变量名

寄存器位置

寄存器是一块具备特殊功能的存储空间

arm v7架构的寄存器组织

1、每个小方格都是一个寄存器,对于ARM V7架构而言,每个寄存器的大小是32位,4个字节
2、在user、sys模式下存在17个可控制的寄存器
3、在fiq、irq、abt、udf、svc、mon模式下存在18个可控制的寄存器
4、在hyp模式下存在19个可控制的寄存器
5、核内寄存器不存在地址,只能通过编号进行访问,编号由R0-R15, CPSR, SPSR白色底的寄存器代表的是共有的寄存器,蓝色底的寄存器代表的是私有的寄存器
在异常模式下,如果存在私有的寄存器,只能访问私有的寄存器,不允许访问共有的寄存器
如果在工作模式下,没有私有的寄存器,就访问共有的寄存器

一共有43个可控制的寄存器

特殊功能寄存器(重点

R13寄存器

R13寄存器   ----> sp寄存器 ---->  the stack pointer  ---->  栈指针寄存器
栈指针寄存器的作用:这个寄存器中存放的是栈空间的一块地址,用于压栈保存现场和出栈恢复现场

不同场景下栈的作用
内存划分中的栈:用于存储数据,存放的是局部变量、函数参数.....
数据结构中的栈:用于存储数据,一种特殊的数据结构
arm裸机开发中的栈:用于存储数据,压栈保存现场、出栈恢复现场栈的特点:在不同的场景下,栈都用于存储数据,并且遵循FILO(先入后出)的特性

R14寄存器

R14寄存器  ---> lr寄存器    ---->   the linking register   ---->  链接寄存器
作用:用于保存函数的返回地址

R15寄存器

R15寄存器 ---->  pc寄存器  ------->  the program counter ------->  程序计数寄存器
作用:用于保存下一条取值指令的地址

CPSR寄存器

CPSR寄存器   ---->  the currented program statue register -----> 当前程序状态寄存器
作用:用于保存当前程序状态的寄存器

SPSR寄存器

SPSR寄存器   ---->  the saved program statue register   -----> 备份程序状态寄存器
作用:用于备份当前的程序状态的寄存器

CPSR寄存器中位的作用

N[31]:负数标志位当指令执行结果为负数时,N位置1,否则清0(可以用于比较大小)
Z[30]:零标志位当指令执行结果为0时,Z位置1,否则清0(用于判断是否相等)
C[29]:进位/借位标志位加法:低32位向高32位进位时,C位置1,否则清0减法:高32位向低32位借位时,C位清0,否则置1
V[28]:符号标志位当符号位发生变化时,V位置1,否则清0I[7]:IRQ屏蔽位i = 1时,屏蔽IRQ(普通中断)i = 0时,不屏蔽IRQ
F[6]:FIQ屏蔽位f = 1时,屏蔽FIQ(快速中断)f = 0时,不屏蔽FIQ
T[5]:状态位t = 0时,arm状态,执行ARM指令集(32位)t = 1时,thumb状态,执行thumb指令(16位)Cortex-A核一般使用的是ARM指令集,Cortex-M核一般使用的是Thumb指令集
M[4:0]:模式位10000 User mode;    10001 FIQ mode;         10011 SVC mode;10111 Abort mode;  11011 Undef mode;  11111 System mode;     10110 Monitor mode;   10010 IRQ mode; 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构师:在 Spring Cloud 中实现全局异常处理的技术指南

1、简述 在分布式系统中,微服务架构是最流行的设计模式之一。Spring Cloud 提供了各种工具和库来简化微服务的开发和管理。然而,随着服务的增多,处理每个服务中的异常变得尤为复杂。因此,实现统一的全局异常处理成为了关键。本篇博客将介绍如何在 Spring Cloud 微服务架构…

Docker日志管理

ELK Filebeat Filebeat 是 ELK 组件的新成员, 也是 Beat 成员之一。基于 Go 语言开发, 无任何依赖, 并且比 Logstash 更加轻量, 不会带来过高的资源占用, 非常适合安装在生产机器上。轻量意 味着简单,Fileb…

51单片机-DA(数字转模拟)

作者:Whappy 个人理解:将电压或电流信号进行等分或不等分(高电平的电压范围和低电平的范围,如0-5v,0-1.8位低电平,3.8-5v为高电平),同样也是通过采样,量化等操作将不连续…

苍穹外卖Day01-2

目录 导入接口文档 创建项目​编辑 导入接口文件 ​编辑 导入结果界面​编辑 Swagger 介绍 如何集成 Swagger? 1.添加依赖 2.配置 Swagger 3.创建 Swagger 配置类 4.使用注解生成文档 5.访问 Swagger UI 6.Swagger 的优势 导入接口文档 yApi接口管理平台h…

Oracle从入门到放弃

Oracle从入门到放弃 左连接和右连接Where子查询单行子查询多行子查询 from子句的子查询select子句的子查询oracle分页序列序列的应用 索引PL/SQL变量声明与赋值select into 赋值变量属性类型 异常循环游标存储函数存储过程不带传出参数的存储过程带传出参数的存储过程 左连接和…

【数据结构】排序算法系列——堆排序(附源码+图解)

堆排序 堆排序基于一种常见的**[[二叉树]]结构**:堆 我们前面讲到选择排序,它在待排序的n个记录中选择一个最小的记录需要比较n一1次。本来这也可以理解,查找第一个数据需要比较这么多次是正常的,否则无法知道它是最小的记录。 …

BCLinux您的授权码是无效的,请获得正确的授权码来注册大云Linux操作系统

更新yum源老弹出这个,很烦人。 [rootlocalhost yum.repos.d]# yum clean all 服务器检查结果: ***信息***您的授权码是无效的,请获得正确的授权码来注册大云Linux操作系统。您可以使用bclinux-license -g命令获得机器码,然后与我们联系帮您产…

网络安全:建筑公司会计软件遭受暴力攻击

黑客正在暴力破解基金会会计服务器上高权限账户的密码,这些账户广泛用于建筑行业,从而侵入企业网络。 这一恶意活动最先被 Huntress 发现,其研究人员于 2024 年 9 月 14 日检测到了此次攻击。 Huntress 已经发现这些攻击对管道、暖通空调、…

ChatGPT提示词-中文版(awesome-chatgpt-prompts中文版)

原是Github上110.6K星的项目:GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better. 我翻译成了中文需要自提 我用夸克网盘分享了「Chat GPT提示词.csv」,点击链接即可保存。打开「夸克APP」在线查看…

考研数学精解【3】

文章目录 重要公式定理运算公式大全 重要公式定理 运算公式大全

VirtualBox7.1.0 安装 Ubuntu22.04.5 虚拟机

环境 (1)宿主机系统:Windows10 (2)虚拟机软件:VirtualBox7.1.0 (3)虚拟机系统:Ubuntu 22.04.5 LTS (Jammy Jellyfish) 安装虚拟机 (1)第一步…

MyBatis中一对多关系的两种处理方法

目录 1.多表联查(通过collection标签的ofType属性) 1)mapper 2)mapper.xml 3)测试代码 4)测试结果 2.分布查询(通过collection标签的select属性) 1)mapper 2)mapper.xml 3&#xff0…

【机器学习】--- 生成对抗网络 (GANs)

生成对抗网络 (GANs) —— 机器学习中的一个热点 生成对抗网络(GANs, Generative Adversarial Networks)近年来在机器学习领域成为一个热点话题。自从Ian Goodfellow及其团队在2014年提出这一模型架构以来,GANs 在图像生成、数据增强、风格转…

Android开发高频面试题之——Android篇

Android开发高频面试题之——Android篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Activity启动模式 standard 标准模式,每次都是新建Activity实例。singleTop 栈顶复用。如果要启动的A…

使用Docker安装 Skywalking(单机版)

使用Docker安装 Skywalking(单机版) 文章目录 使用Docker安装 Skywalking(单机版)Skywalking 介绍Skywalking 安装 Skywalking 介绍 Skywalking官网 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容…

水果成熟度检测系统源码分享

水果成熟度检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

如何准备教师资格证科目三“学科知识与教学能力”的考试与面试?(理科导向:数学/物理)

如何准备教师资格证科目三“学科知识与教学能力”的考试与面试?(理科导向:数学/物理) ​ 目录 收起 1 前言 1.1 自身经历 1.2 教师资格证的作用 2 知识点题型分数的分布与学习建议 2.1 科目三的知识点分数分布: …

提高数据集成稳定性:EMQX Platform 端到端规则调试指南

自 5.7.0 版本起,EMQX 支持了 SQL 调试,并支持在数据集成全流程中进行规则调试,使用户能够在开发阶段就全面验证和优化规则,确保它们在生产环境中的稳定高效运行。 点击此处下载 EMQX 最新版本:https://www.emqx.com/z…

【C++语言】C/C++内存管理

一、C/C内存分布 我们先来看一看C/C中有哪些区域,为什么C/C中区分这些区域呢??不同的数据有不同的存储需求,各个区域满足不同的需求。我们有临时用的数据,该数据是存储在栈帧区域的;在一些数据结构中&#…

自媒体起号新思路!利用AI创作治愈类内容的运营指南

最近,治愈类内容在各大社交平台上备受欢迎。无论是刷短视频还是看小红书,都能发现这类账号的流量巨大,粉丝数量飞速增长。 总而言之,汇成一句话: 如何利用AI技术,创作治愈类的图片和视频,吸引粉…