计算机处理器,执行的是 二进制的 10101010001,这些机器码对应的助记符就是汇编指令。
处理器 fetch 到的指令是 1001010101, 可能就是 对应汇编语言中 ADD 的加法指令, 处理器执行 加法操作,并把结果输出到目的寄存器。
ARM (RISC)指令长度固定为 32 bits。
2. ARM 指令集ARM 指令集可以分为下面六类:
3. 常见 ARM 汇编指令定义: 3.1 MOV 数据传送指令MOV<cc> <S> Rd, <op1>
Rd 是目的寄存器,<op1> 是操作数。
注意 MOV 指令,op2 如果是 立即数,立即数必须小于 65535(0xFFFF),所以如果给 int i = 0x11111111;ARM 汇编对应的是以下两条指令:
S:0x80002040 : MOV r1,#0x1111
S:0x80002044 : MOVT r1,#0x1111
[ARM 官方文档库] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjagdjbf.html
在 ARM 中,word 长度是 32 bits, half word 是 16 bits, Byte 是 8 bits.
3.5 数据传送指令 MOV: 3.6 Store 多个 Register 指令 STM: 3.7 Store Register 指令 STR:
4. Offset Addressing & Pre-Index Addressing & Post-Index Addressing 4.1 Offset Addressing:
Offset Addressing 指令例子: LDR R0, [R1, #4] 这种寻址方式,不会改变 Base 寄存器 R1 的值。(只寻址,不改 Base 寄存器)
4.2 Pre-Index AddressingPre-Index Addressing 指令例子: LDR R0, [R1, #4]! 这种寻址方式,会改变 Base 寄存器 R1 的值。
先将寻址的内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1。(先寻址,后改 Base 寄存器)
4.3 Post-Index AddressingPost-Index Addressing 指令例子: LDR R0, [R1], #4 这种寻址方式,会改变 Base 寄存器 R1 的值。
先将 Base 寄存器 R1内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1,(先读 Base 寄存器,后改 Base 寄存器)
[] 内存寻址
5. ARM 指令总结:参考文献:
ARM_AssyLang.pdf