· (汇编)指令是CPU机器指令的助记符,进过编译后会得到一串10组成的机器码,可以由CPU读取执行
·(汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。
·ARM官方的ARM汇编风格:指令一般大写,Windows中IDE开发环境(ADS,MDK)例如:LDR R0,[R1]
·GNU风格的ARM汇编风格:指令一般小写,linux中常用,如:ldr r0,[r1] (两种风格的伪指令差别最大)
·ARM采用RISC架构,CPU本身不能直接读取内存,而要先将内存读取到通用寄存器才能被CPU处理。
·ldr(load register)指令将内存内容读取到通用寄存器。
·str(store register)指令将寄存器内容写入到存入内存空间中。
·ldr/str组合来实现ARM CPU和内存数据交换
·ARM汇编特点:8种寻址方式
-寄存器寻址 mov r1,r2 r2的值赋值给r1
-立即数寻址 mov r0,#0xFF00 #后面的数值直接赋值给r0
-寄存器移位寻址 mov r0,r1,lsl #3 r1中的数值左移三位,然后赋值给r0(就是乘于8)
-寄存器间接寻址 ldr r1,[r2] 类似于指针,r2中存操作数的地址,[]类似于解引用
-基址变址寻址 ldr r1,[r2,#4] r2为基址,r2里面的地址加4,这个地址存的值读到寄存器中
-多寄存器寻址 ldmia r1!,{r2-r7,r12} r1中的8个地址读到r2-r7和r12中(类似于数值中的8个元素)
-堆栈寻址 stmia sp!,{r2-r7,lr} (没弄明白)
-相对寻址 beq flag
flag: