汇编指令和伪汇编指令
汇编指令:CPU指令的助记符
伪汇编指令:本质上不是指令,是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码
ARM汇编的特点
ARM汇编的特点1:LDR/STR架构
ARM采用RISC架构,CPU本身不能直接读取内存(CISC结构的可以直接读取内存),而需要先将内存中内容载入CPU中通用寄存器才能被CPU执行。
ldr (load register) 将内存内容加载进入通用寄存器
str (store register) 将寄存器内容存入内存空间
ARM汇编的特点2:8种寻址方式
类别 | 示例 |
---|---|
寄存器寻址 | mov r1, r2 |
立即寻址 | mov r0, #0xFF00} |
寄存器移位寻址 | mov r0, r1, lsl #3 @(r0=r1<<3) |
寄存器间接寻址 | ldr r1, [r2] |
基址变址寻址 | ldr r1,[r2,#4] @r1 = r2+4 |
多寄存器寻址 | ldmia r1!,{r2-r7,r12} |
堆栈寻址 | stmfd sp!, {r1-r7,lr} |
相对寻址 | beq flag |
ARM汇编的特点3:指令后缀
同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:
后缀 | 功能 |
---|---|
B (byte) | 功能不变,操作长度变为8位 |
H (half word) | 功能不变,长度变为16位 |
S (signed) | 功能不变,操作数变为有符号 如 ldr ldrb ldrh ldrsb ldrsh |
S (S标志) | 功能不变,影响CPSR标志位 如 mov和movs |
ARM汇编的特点3:条件执行后缀
如果后缀条件满足才执行。
例如:
mov r0, r1 @r0 = r