ARM体系结构

news2024/11/23 23:31:07

目录

ARM体系架构

一、ARM公司概述

二、ARM产品系列

三、指令、指令集

指令    

 指令集    

ARM指令集

 ARM指令集    

Thumb指令集  (属于ARM指令集)

四、编译原理

五、ARM数据类型

字节序

大端对齐    

小端对齐    

六、ARM工作模式

1.ARM工作模式分类

七、寄存器

1.专用寄存器

2.CPSR寄存器


ARM体系架构

一、ARM公司概述

1.ARM的含义    

ARM(Advanced RISC Machines)有三种含义 :一个公司的名称、一类处理器的通称、一种技术

2. ARM公司    

> 成立于1990年11月,前身为Acorn计算机公司    

> 主要设计ARM系列RISC处理器内核    

> 授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片    

> 提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件、 总线架构、外围设备单元等

二、ARM产品系列

早先经典处理器    

包括ARM7、ARM9、ARM11家族

 Cortex-A系列    

针对开放式操作系统的高性能处理器     应用于智能手机、数字电视、智能本等高端运用  

Cortex-R系列    

针对实时系统、满足实时性的控制需求     应于汽车制动系统、动力系统等

 Cortex-M系列    

为单片机驱动的系统提供了低成本优化方案     应用于传统的微控制器市场、智能传感器、汽车周边等 

RISC精简指令集,代表:ARM

CISC:复杂指令集,典型代表:Intel

SOC(System on Chip) 即片上系统,将一个系统中所需要的全部部件集成在一个芯片中在体积、功耗、价格上有很大优势。例如:单片机

三、指令、指令集

指令    

能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...)    

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

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

程序是指令的有序集合

 指令集    

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

不同架构的处理器指令集不同    

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

ARM指令集

大多数ARM处理器都支持两种指令集:

 ARM指令集    

所有指令(机器码)都占用32bit存储空间    

代码灵活度高、简化了解码复杂度    

执行ARM指令集时PC值每次自增4  

Thumb指令集  (属于ARM指令集)

所有指令(机器码)都占用16bit存储空间    

代码密度高、节省存储空间    

执行Thumb指令集时PC值每次自增2

四、编译原理

单片机常用的烧录二进制格式hex文件

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

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

  1. -S: 编译,生成汇编代码,生成的文件为test.S

    gcc -S test.s

  2. -c: 汇编:生成机器码,生成的文件未test.o

    gcc -c test.c

C语言在编译时我们可以使用不同的编译器(gcc)==>(翻译官)将C源码编译成不同架构处理器的汇编,所以C语言可以移植

五、ARM数据类型

ARM采用32位架构,基本数据类型有以下三种    

Byte               8bits       字节

Halfword        16bits     半字

Word              32bits     全字

数据存储    

Word型数据在内存的起始地址必须是4的整数倍    

Halfword型数据在内存的起始地址必须是2的整数倍    

注:即数据本身是多少位在内存存储时就应该多少位对齐

字节序

大端对齐    

低地址存放高位,高地址存放低位    

a = 0x12345678;  

小端对齐    

低地址存放低位,高地址存放高位    

a = 0x12345678; 注:ARM一般使用小端对齐

六、ARM工作模式

 不同模式拥有不同权限  

不同模式执行不同代码  

不同模式完成不同的功能

1.ARM工作模式分类

按照权限    

User为非特权模式(权限较低),其余模式均为特权模式(权限较高)  

按照状态    

FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后 会进入对应的模式

七、寄存器

 概念     寄存器是处理器内部的存储器,没有地址

 作用     一般用于暂时存放参与运算的数据和运算结果  

分类     包括通用寄存器、专用寄存器、控制寄存器

 注:在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用

1.专用寄存器

R15(PC,Program Counter)    

程序计数器,用于存储当前取址指令的地址  

R14(LR,Link Register)    

链接寄存器,一般有以下两种用途:    

> 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址      

程序需要返回时将LR的值复制到PC即可实现    

> 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下      

一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回  

R13(SP,Stack Pointer)    

栈指针,用于存储当前模式下的栈顶地址

2.CPSR寄存器

CPSR(Current Program Status Register),当前程序状态寄存器

 CPSR寄存器分为四个域,[31:24]为条件域用F表示、[23:16]为状态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示。

模式位:切换ARM工作模式;状态位:一般为ARM状态

  • Bit[4:0]     [10000]User        [10001]FIQ        [10010]IRQ          [10011]SVC                                              [10111]Abort       [11011]Undef      [11111]System      [10110]Monitor             
  •  Bit[5]     [0]ARM状态     [1]Thumb状态  
  • Bit[6]     [0]开启FIQ     [1]禁止FIQ  
  • Bit[7]     [0]开启IRQ     [1]禁止IRQ

Bit[28]    溢出标志

     > 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0    

     > 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1

 Bit[29]    进位或借位扩展

     > 当运算器中进行加法运算且产生进位时该位自动置1,否则为0    

     > 当运算器中进行减法运算且产生借位时该位自动置0,否则为1  

Bit[30]    零

    当运算器中产生了0的结果该位自动置1,否则为0  Bit[31]    

    当运算器中产生了负数的结果该位自动置1,否则为0

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

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

相关文章

Java中synchronized锁的深入理解

使用范围 synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使用中用于对非static修饰的便是当前对象锁 synchronized的优化 在jdk1.6中对synchronized做了相关的优化 锁消除 在synchronized修饰的代码块中…

如何实现局域网下设备之间的互通互联和外网访问?

两台电脑怎么在同一路由下访问共享文件夹?两台不同系统的电脑在同一个路由器下访问共享文件夹进行数据共享,从本质上说就是在同一个局域网下设备之间的互通互联,这就需要我们搭建一个内网文件共享服务器来实现此功能 ,比如常见的W…

linux系统中通配符与常用转义字符

通配符 在平时我们使用使用linux系统的过程中会遇到忘记文件名称的问题,这时候呢,通配符就发挥它的作用啦。 顾名思义啦,通配符就是用来匹配信息的符号,如何(*)代表零个或多个字符,(…

Unity烟花特效实现(附源码)

Unity烟花特效 附代码 写在前面效果代码地址核心步骤 写在后面 写在前面 朋友过生,不知道送什么礼物,就想着用自己所学知识做个特效当礼物吧,嘿。 主要参考了 这位up的视频 ,感谢 效果 代码地址 https://github.com/hahahappyb…

【LeetCode热题100】打开第5天:最长回文子串

文章目录 最长回文子串⛅前言🔒题目🔑题解 最长回文子串 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识…

linux高级---k8s中的五种控制器

文章目录 一、k8s的控制器类型二、pod与控制器之间的关系三、状态与无状态化对特点四、Deployment1、Deployment的资源清单文件2、在配置清单中调用deployment控制器3、镜像更新4、金丝雀发布5、删除Deployment 五、Statefulset六、DaemonSet1、daemonset的资源清单文件2、在配…

车载T-BOX

Telematics BOX,简称车载T-BOX,车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控制 目录 1、车载T-BOX的定义 2、车载T-BOX的主要功能 2.1、数据采集和存储 2.2、远程查询和控制 2.3、道路救援 2.4、故障诊断 …

vue2_计算属性

目录 计算属性 计算属性缓存vs方法 计算属性vs侦听属性 getter和setter 计算属性和监听器 前端调用api实现问答 侦听器 计算属性 鉴于能在插值表达式中写js表达式;这样做也一定程度上违背了设计插值表达式的初衷;特别是: 其实就相当于…

nginx(七十九)rewrite模块指令再探

一 rewrite模块再探 ① 知识回顾 1) 结合自己遇到过的案例场景2) 关注一些易错点、难点3) 本文内容很杂,建议读者选取感兴趣的阅读 rewrite模块 rewrite功能 ② nginx中利用if 等价&&多条件 需求背景: 1) nginx不支持&&、||、and、or等逻辑…

设备描述符

前言 一直以来对设备描述符这个概念云里雾里的: 什么是设备描述符?设备描述符是个结构体还是结构体指针?为什么要有设备描述符?设备描述符的作用?设备描述符是根据什么定义的? 启发 今天看《Linux那些事…

【喜闻乐见,包教包会】二分图最大匹配:匈牙利算法(洛谷P3386)

🎭不要管上面那玩意。。。 引入 现在,你,是一位酒店的经理。 西装笔挺,清瘦智慧。 金丝眼镜,黑色钢笔。 大理石的地板,黑晶石的办公桌,晶莹的落地玻璃。 而现在,有几个雍容华贵的…

Spring高手之路——深入理解与实现IOC依赖查找与依赖注入

本文从xml开始讲解,注解后面给出 文章目录 1. 一个最基本的 IOC 依赖查找实例2. IOC 的两种实现方式2.1 依赖查找(Dependency Lookup)2.2 依赖注入(Dependency Injection) 3. 在三层架构中的 service 层与 dao 层体会依…

Opencv(图像处理)-基于Python-绘图功能

1.介绍2. line()3.rectangle()4.circle()5. ellipse()6.polylines()7.fillPoly()8. putText()代码示例9.用鼠标在图片上作图 1.介绍 OpenCV为开发者还提供了绘图功能,我们可以通过函数来实现在图片上作图。 2. line() 画线 cv2.line(img,开始点&#x…

G0第23章:GORM基本示例、GORM Model定义、主键、表名、列名的约定

04 GORM基本示例 注意: 本文以MySQL数据库为例,讲解GORM各项功能的主要使用方法。 往下阅读本文前,你需要有一个能够成功连接上的MySQL数据库实例。 Docker快速创建MySQL实例 很多同学如果不会安装MySQL或者懒得安装MySQL,可以使用一下命令…

STL好难(3):vector的使用

目录 1.vector的介绍和使用 2.vector的常见构造: 3.vector的遍历方式 🍉[ ] 下标 🍉通过迭代器进行访问: 🍉范围for: 4.vector的迭代器 🍉begin 和 end 🍉rbegin 和 rend …

【论文阅读】Densenet:Densely Connected Convolutional Networks 密集连接的卷积网络

文章目录 前言一、摘要二、网络架构2.1. densenet2.2. dense block2.3 与resnet对比2.4 pytorch代码 三.实验结果四.结论 前言 从今天开始总结一下之前看的一些深度学习相关的论文。 今天的这篇还是比较经典的论文:密集连接网络。在很多国内的硕士毕业论文里都出现…

XDP入门--eBPF程序实现网桥/二层交换机转发功能

本文目录 1、试验环境2、eBPF字节码源代码实现3、用户态应用层管理与控制程序的源代码实现4、编译与运行5、测试结果 我们在此文的进阶部分 或者 此文中已经描述了如何设置Linux网桥,并将多个以太接口加入网桥后实现一个最基本的二层交换机的二层交换转发功能。Linu…

如何在华为OD机试B卷中获得满分?Java实现【食堂供餐】一文详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

【剑指offer】数据结构——链表

目录 数据结构——字符串直接解【剑指offer】06. 从尾到头打印链表牛客力扣 【剑指offer】24. 反转链表【剑指offer】25. 合并两个排序的链表【剑指offer】35. 复杂链表的复制【剑指offer】52. 两个链表的第一个公共结点 特殊解——双指针【剑指offer】18. 删除链表的节点【剑指…

六级备考23天|CET-6|翻译技巧4|2013年官方样题|新年|9:45~11:00

目录 1 PRACTICE ANSWER 2 PRACTICE ANSWER 3 ​ PRACTICE ANSWER 4 PRACTICE ANSWER 5 PRACTICE ANSWER 6 ​ PRACTICE ANSWER ​​​​​​​ 答案整合​​​​​​​ 1 PRACTICE Chinese new year is the Chinese most important traditional festival, wh…