首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

问一个ARM的小白有关问题

2013-06-25 
问一个ARM的小白问题书上这么说:mov ro,#10000会替换为 ldr ro, 10000,然后这条ldr伪指令又替换为 ldr ro

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

热点排行