ARM公司只负责设计芯片不生产具体的硬件
arm指令集版本, V4(包括arm9以下), V6(arm11), V7(a8, a9, a7, a15, a53)
流水线: arm9 5级, arm11 8级, a9 x级
一个程序(由多条指令组成)-->程序要执行前先放入内存, 一条条指令执行
指令执行过程: 取指(从内存里把指令加载到cpu的缓存中) -->> 译码(把指令转换成硬件的功能信息) -->> 执行
不管流水线多少级都是我们看成三个指令周期来完成取指,译码,执行
100Hz: 一秒钟内有100个时钟周期信号,每个信号表示10ms时间
指令周期: 这个为指令的最小时钟单位, 一条指令要取指, 译码或执行的时间
1. arm与x86的不同点
arm x86
RISC:精简指令集 CISC: 复杂指令集(机器指令比较多)
用汇编开发效率 机器运算效率
37寄存器 十几个寄存器
arm绝大多的操作数放到寄存器 可以直接操作在内存里的数据, 而不用放入寄
后再运算 寄存器
大多寄存器为通用寄存器 专用寄存器, 如作加法, 则把数放入AL/AH
arm的机器指令固定为32位每条 每条指令的长度不是固定的
统一编址 独立编址
统一编址: 32位的cpu寻址空间为4G, 板子上的内存为1G,则内存只需用1G地址即可, 其它3G的地址空闲, 可把空闲的地址分配用于控制cpu的IO口功能使用.
像内存地址,与IO口地址都是处于同一寻址空间的编址方式就叫统一编址
独立编址: 内存地址与IO口的地址是不处于同一寻址空间的, 南北桥
cpu分七种工作模式: (架构手册P41)
user, 用户模式, 在linux系统中, 用户进程所在的工作模式
FIQ, 快速中断模式, 当发生快速中断时, cpu会自动进入此工作模式
IRQ, 中断模式, 当发生普通中断时, ......
Supervisor, 管理员模式, 在linux系统中, 内核驱动所在的工作模式
Abort, 终止模式, 当发生数据异常或取指异常时, 所在的模式
Undefined, 未定义模式, 当译码时遇到不认识的指令时, 会进入此模式
System, 系统模式, 一些系统的特定的任务的工作模式
cpu在某一时刻只能在一种工作模式下执行
寄存器(架构手册p43)
没有阴影部分的寄存器表示各个模式下是共用的, 带阴影的表示为此模式下特有的
如共用的寄存器里有R13, 而Supervisor模式下有带阴影R13_svc, 表示当cpu处在supervisor模式时, 访问R13寄存器时, 当访问的是R13_svc,而不是全局的R13
R0--R12可作为通用寄存器, 想干嘛就干嘛
R13, R14, PC, CPSR, SPSR这些寄存器有特定的用途, 不可以瞎搞
R11: fp
R12: ip
R13: 别名sp, 此寄存器用于装载栈顶的地址
R14: 别名lr, 此寄存器用于装载返回地址
R15: 别名pc, 此寄存器用于装载当前取指令的内存地址
CPSR: 当前程序状态寄存器, 用于获取当前程序执行状态, 或用于改变工作模式等用途
SPSR: 备份程序状态寄存器, 专用于保存当前程序状态寄存器的值
01 arm汇编前的基础
最新推荐文章于 2023-12-21 00:20:24 发布