LV08-01-ARM体系-01-ARM处理器与指令集简介
本文主要是ARM基础知识——处理器与指令集简介相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
SecureCRT | Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 |
开发板 | 正点原子 i.MX6ULL Linux阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
STM32开发板 | 正点原子战舰V3(STM32F103ZET6) |
Keil(MDK) | Keil uVision V4.54.0.0 |
点击查看本文参考资料
参考方向 | 参考原文 |
--- | --- |
一、ARM
处理器概述
1. ARM
产品系列
- 早期的经典处理器
包括了ARM7
、ARM9
、ARM11
家族。
Cortex-A
系列
针对开放式操作系统的高性能处理器,应用于智能手机、数字电视、智能本等高端运用。例如Cortex-A5
、
Cortex-A8
、Cortex-A9
、Cortex-A15
、Cortex-A53
。
Cortex-R
系列针对实时系统、满足实时性的控制需求,主要应于汽车制动系统、动力系统等方面。例如,
Cortex-R4
、Cortex-R5
、Cortex-R7
。Cortex-M
系列这系列的芯片为单片机驱动的系统提供了低成本优化方案,主要应用于传统的微控制器市场、智能传感器、汽车周边等方面。例如,
Cortex-M0
、Cortex-M1
、Cortex-M3
、Cortex-M4
、Cortex-M7
。
2. RISC
和CISC
RISC
处理器
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令。这种处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛。
CISC
处理器
该种处理器不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定。CISC
处理器在性能上有很大优势,多用于PC
及服务器等领域。
SOC
System on Chip
,即片上系统,将一个系统中所需要的全部部件集成在一个芯片中,它在体积、功耗、价格上有很大优势。
二、ARM
指令集概述
1. 指令
能够指示处理器执行某种运算的命令称为指令(如加、减等)。指令在内存中以机器码(二进制)的方式存在,每一条指令都对应一条汇编,我们所写的程序其实就是指令的有序集合。
2. 指令集
处理器能识别的指令的集合称为指令集。不同架构的处理器指令集不同,指令集是处理器对开发者提供的接口。
3. ARM
指令集
大多数ARM
处理器都支持两种指令集:ARM
指令集和Thumb
指令集。
ARM
指令集
所有指令(机器码)都占用32bit
存储空间,它的代码灵活度高、简化了解码复杂度,执行ARM
指令集时PC
(程序计数器)值每次自增4
。ARM
指令集大概分为六种:
数据处理指令 | 进行数学运算、逻辑运算 |
跳转指令 | 实现程序的跳转,本质就是修改了PC寄存器 |
Load/Store指令 | 访问(读写)内存 |
状态寄存器传送指令 | 用于访问(读写)CPSR寄存器 |
软中断指令 | 触发软中断 |
协处理器指令 | 操作协处理器的指令 |
其中前三种是通用指令,也就是所有的处理器都有的指令,在C
语言中都有相应的语句可以被编译成对应的指令,后三种是ARM
专用指令,在C
语言中没有相应的语句,所以不会有哪条C
语言语句会被编译成后边三种指令。
Thumb
指令集
所有指令(机器码)都占用16bit
存储空间,代码密度高、节省存储空间,执行Thumb
指令集时PC
值每次自增2
。
4. 机器码与汇编
4.1 机器码
机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植。
4.2 汇编语言
汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植。
4.3 C
语言
C
语言在编译时我们可以使用不同的编译器将C
源码编译成不同架构处理器的汇编,C
语言是可以移植的。