欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

问一个arm的小白有关问题

更新时间: 2014-01-05 03:17:35 责任编辑: Author_N1

 

问一个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.
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20474/
本文WWW.DOC100.NET DOC100.NET版权所有。