提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一.ARM基本。
ARM成立于1990年,有Advanced Risc Machines三家公司组成。
1991年第一个ARM内核诞生。
ARM的核心功能:机器码,主频,高速缓存cache,多核,硬浮点计算,数据运算,功耗。
ARM的内核是一种CPU的架构设计。
cpu架构有冯诺依曼结构和哈佛结构,现在一般都采用哈佛结构,哈佛结构采用指令和数据独立编址,使用2条独立的通道,cpu读取指令和数据的操作可以重叠,而冯诺依曼结构是统一编址的,同条总线传输,cpu读取指令和数据的操作不能重叠。
处理器
通常使用的有RISC(精简指令集处理器)和CISC(复杂指令处理器)两种,现在更多的在使用RISC的方向。
RISC:RISC更着主于如何使计算机的结构更简单,使计算机的处理速度更快速,RISC固定指令长度,选取频率高的简单指令,抛弃复杂指令,在功耗,体积,价格等方面有很大优势,多用于嵌入式领域。
CISC:侧重于硬件执行指令的功能性,CISC指令及处理器的硬件结构复杂,其指令复杂,指令长度于周期不固定,在处理能力上优势。
CPU/MCU/SOC差别
CPU:所有cpu的工作原理都包括4个阶段:提取,解码,‘,写回。
MCU:微控制器,将cpu,ram,rom,各种接口集成在一个芯片上,有简单的操着系统,广泛应用于各种控制设备,仪表,传感器等等。
SOC:片上系统,系统级别的芯片,可以运行复炸的操作系统。
ARM是32位指令集,Thumb是16位指令集,从ARM v4E开始ARM开始支持16位指令集。
ARM寄存器:r0-r7为低位寄存器,r0-r12为通用寄存器,r13(sp)为堆栈指针,r14(lr)为连接寄存器,r15(pc)为程序计数器,CPSR为存储当前内核状态和模式标志。
ARM架构提供37个32-bit的寄存器,Cortex-A多出3个。
ASM的工作模式有User(正常)模式,特权模式下的异常模式和System特权模式。
二.ARM基础指令。
MOV/MVN:立即数,arm指令是RISC精简指令集,指令长度固定32位,指令格式中低112位表示要操作的常数,但范围太小了,所以用12位中的八位来表示基本数值,4位表位移,通过8位数右循环4位数值*2来表示
MOV能表示的数:1.除0外仅有一位合法数。 2.除零外仅有2位数,并且相邻(包括首尾)。 3.除零外,仅有三位数,如0x14000003,最高位取1,2,3,中间位取4,8,最低位0x0-0xf,这种组合。 4.0xffffffff
ADD:ADD rd, rn, n 加
SUB:SUB rd, rn, n 减
MUL:MUL rd, rn, rm 乘,rd于rn不能是同一个
AND:AND rd,rn, n 与
ORR:ORR rd, rn, n 或
EOR:EOR rd, rn, n 异或
BIC:BIC rd, rn, n rn与n按位取反的结果放入rd中
CMP:CMP rd, rn 比较指令
B Label:直接跳转到label处,偏移量24位,最大正负32M处
BL Label:先保存pc到lr再跳转,执行完后回到调用处。
BX/BLX Label:跳转并arm和thumb之间切换
LDR pc, =label:长距离跳转
单数据访问:
LDR rd, 【rn】:读内存
STR rd, 【rn】:写内存
STR r0, 【r1, #4】 LDR r0,【r1, #4】:前索引
STR r0, 【r1】 #4 LDR r0,【r1】 #4:后索引
STR r0, 【r1, #4】! LDR r0,【r1, #4】!:自动索引
多数据访问:
LDM{cond}<mode>Rn{!},{Reglist}:将一快内存的数据放到多个寄存器里
STM{cond}<mode>Rn{!},{Reglist}:将多个寄存器的值存储到一块内春里
出入栈操作;
stmfd sp!,{r0-r12}
ldmfd sp!,{r0-r12}
CPSR,SPSR操作指令:
MRS rd, CPSR/SPSR
MSR CPSR/SPSR, rd
ARM有7种异常模式
常见问题;