arm常用汇编指令和伪指令
adr 和 ldr伪指令
adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。
adr r0, _start </span>@将指定地址赋到r0中
ldr r0, =_start </span>@将指定标号的值赋给r0
str 和 ldr指令
ldr r0 [r1] @将r1地址中的值赋值给r1
str r0 [r1] @将r0中的值赋值给r1所指的地址
bne 和 beq
cmp r1 ,r0
beq label @ 即当R1和r0相等的时候程序跳到标号label处执行
cmp r1 ,r0
bne label @ 即当R1和r0不相等的时候程序跳到标号label处执行
bic
bic r1 ,r1 #0xf @将r1的低4位清0 r1 = r1 & ~(0xf);
mrs
mrs r1 ,cpsr @将cpsr中的值读取到r1
// 开/关icache
mrc p15,0,r0,c1,c0,0; // 读出cp15的c1到r0中
//bic r0, r0, #(1<<12) // bit12 置0 关icache
orr r0, r0, #(1<<12) // bit12 置1 开icache
mcr p15,0,r0,c1,c0,0;
stmfd sp!,{r0-r12}将寄存器r0~r2中的数据压人堆栈!说明最后堆栈指针更新
ldmfd sp!,{r0-r12}数据出栈将数据放入寄存器r0~r2中!说明最后堆栈指针更新
伪操作
.gobal 声明一个全局变量
.word 放置一个字数据
.section 定义一个段