一图流
ARM
计算机组成
输入设备
输出设备
存储设备
运算器
控制器
处理器读取内存程序执行的过程
取指阶段:控制器器通过地址总线向存储器发送想要获取的指令的地址编号,存储器将指定的指令发送给处理器
译码阶段:控制器对指令进行分析和译码,确定当前指令的作用
执行阶段:控制器通知运算器进行对应的指令运算
指令
机器指令:我们为处理器的每一种运算设置了一条机器指令,机器指令又被称为机器码,由多个0和1组成
汇编指令:将每一条汇编指令理解为一条机器指令的封装形式,当一条汇编指令被编译后,就得到一条机器指令,执行后让处理器进行对应的运算操作
指令集
概念
指令的集合
不同的指令集可以被当作设计不同处理器内核的架构
一般在设计一个内核时会预先将这个处理器内核可以进行的运算的指令设计出来,把这些指令组成一个指令集,按照这个指令集设计这个内核
复杂指令集(CISC)
看重当前处理器的处理能力,将所有能够进行的运算操作的指令组成一个指令集,这种指令集就是复杂指令集
优点:功能强大
缺点:功耗、成本、体积都高
特点
每一条指令的长度不固定
每一条指令的执行周期也不固定
复杂指令集(CISC)
追求功能的特定性,将使用频度最高,比较简单的指令组成指令集
精简指令集优点:开发成本低、功耗低
缺点:实现的功能简单
特点
指令的大小固定
指令的执行周期固定
常见的精简指令集架构
ARM架构:ARM公司设计的精简指令集架构,使用的最多
RISC-V架构:开源,未来会火
MIPS架构:中国龙芯收购,完全垄断
ARM架构
ARMV1-ARMV6 //基本不被使用
ARMV7:32位处理器架构 支持32位指令集
ARMV8:64位处理器架构,支持64位指令集,向下兼容32位指令集
ARMV9:64位处理器架构,支持64位指令集
ARM v7架构处理器的工作模式
User : 非特权模式,大部分任务执行在这种模式
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor(SVC) :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式
ARMv7架构的寄存器组织
概述
-
不同工作模式下使用的内核中的寄存器是不一样的
-
不算MON和HYP模式,用户可操作的寄存器总共有37
-
每一个寄存器的大小都是4字节
寄存器
R0-R12用来保存基本的操作数据和运算的数据
R13寄存器
栈指针寄存器(STACK POINTER/sp)
sp寄存器保存该模式下栈内存栈顶地址,用于进行栈内存读写
R14寄存器
链接寄存器(link register/LR)
链接寄存器是用于特定程序跳转场景下用于保存程序的返回地址
R15寄存器
程序计数器(program counter/PC)
PC寄存器中保存马上要被取指的指令地址
当PC保存的地址执行后,PC的数值会自动向下加一条指令的大小
实现程序跳转的本质就是修改PC的值