1.掌握八条汇编指令即可
读内存load | LDR R0, [addrA] |
写内存store | STR R0, [addrA] |
加 | ADD R0, R1, R2 |
减 | SUB R0, R1, R2 |
比较 | CMP R0, R1 |
跳转 | B / BL |
入栈 | PUSH {R3, LR} |
出栈 | POP {R3, R1} |
汇编指令介绍:
读指令:LDR R0, [addrA]
该指令存在flash中,LDR是load register的意思,CPU从[addrA]把它存的内容加载到R0寄存器
写指令:STR R0, [addrA]
该指令也存在flash中,STR是store register的意思,CPU把R0中的值存到[addrA]上
加法指令:ADD R0, R1, R2
CPU将从寄存器R1和R2中分别读取值,将它们相加,并将结果存储到寄存器R0中
入栈指令:PUSH {R3, LR}
CPU将从寄存器R3和链接寄存器LR中分别读取值,并将它们压入堆栈中;具体压入栈哪个位置,由R13(也就是SP)指定;注意PUSH大括号中的寄存器顺序随便写都行
2.ARM架构
举个例子说明如何实现a = a+b?该函数在ARM架构中是如何实现的?
R13:SP栈顶;
R14:LR返回地址;
R15:PC当前执行位置;
RAM:读写数据;
FLASH:存代码,告诉CPU这个“四肢发达,头脑简单”的傻大个该干嘛;
第一,CPU读Flash得到指令;
第二,执行指令;
第三,读a,b;
第四,写入新的a;