读书人

问一个ARM的小白有关问题

发布时间: 2013-06-25 23:45:41 作者: rapoo

问一个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.

读书人网 >汇编语言

热点推荐