PC寄存器
32位thumb也是采用三级流水线结构,但是每个指令位2个字节因此+4
- thumb模式读PC寄存器
mov r0, pc ; thumb mode r0 = pc + 4
LDR R1, =(aLd - 0xAC3B62C)
ADD R1, PC ; "%ld\n"
- thumb模式使用LDR使用PC进行间接寻址
如果pc为非4字节对齐, pc会向上对齐
- arm模式读PC寄存器
mov r0, pc ; arm mode r0 = pc + 8
ldr r0, [pc, #2] ; r0 = mem(pc + 8 + offset(2))
背后原理
- 32位arm,采用3级流水线结构
- 64位arm,采用5级流水线结构体