当前位置: 代码迷 >> 汇编语言 >> 问一个ARM的小白有关问题
  详细解决方案

问一个ARM的小白有关问题

热度:324   发布时间:2016-05-02 04:52:52.0
问一个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+1代表的就是读取下一条指令的地址,如果是单字节指令的话,运行完这个指令PC会自动加1,然后接着读取下一条指令,如果是双字节或者三字节指令,PC就是加2或者加3.
  相关解决方案