我只是为了乐趣而拆卸和调试ARM二进制文件,但发现一些不寻常的东西。考虑以下指令集:-我尝试在0x0000805c上设置断点,并检查了寄存器r1的值。我本来希望看到0x0000805c,但是有趣的是,值是0x8060。为什么

?这是因为某种指令流水线吗?

#1 楼

是的,这是因为流水。

来自http://winarm.scienceprog.com/arm-mcu-types/how-does-arm7-pipelining-works.html-




PC(程序计数器)的计算比当前指令
早8个字节。