问一个ARM的小白问题书上这么说:mov ro,#10000会替换为 ldr ro, =10000,然后这条ldr伪指令又替换为 ldr ro, [pc,#-4]DCD 10000我的问题是,为什么pc要-4而不是加4?我所猜想的是编译器先读取DCD指令然后再读取ldr指令,pc才会 -4,不知道我这样想对不对? [解决办法]
Quote: 引用:看错了。PC是程序计数器。写入指令的时候减4。PC指向的正在执行的下一条指令,所以写入程序的时候pc-4,就好像堆栈一样,先sp的值变化,再进行存储的。所以如果是读取指令时,pc加4?
看错了。PC是程序计数器。写入指令的时候减4。PC指向的正在执行的下一条指令,所以写入程序的时候pc-4,就好像堆栈一样,先sp的值变化,再进行存储的。