首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序计数器?

程序计数器?
EN

Stack Overflow用户
提问于 2012-04-11 20:04:29
回答 2查看 10.6K关注 0票数 7

如果我理解正确的话,程序计数器指向要执行的指令的地址,在大多数情况下,将4加到程序计数器以前进到下一个指令地址。但是假设你有一个程序计数器,它指向内存中的一个单词(例如单词15),并且你想前进到下一条指令,为了得到下一条指令,你想直接将4加到15吗?如有任何解释,不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 20:07:07

这个东西叫做指令指针。一旦处理器解码了当前指令,它就会发现它占用了多少字节,并知道要向当前指令指针值添加多少字节才能前进到下一条指令,这样当当前指令被执行时,处理器就知道下一步要做什么。

例如,处理器从指令指针存储值15开始,就像你的例子一样-它看起来恰好在那个地址上,恰好有一个占用5个字节的指令,没有问题-它将5加到当前值上,结果是20,所以指令指针现在存储值20,然后处理器执行当前指令。

票数 6
EN

Stack Overflow用户

发布于 2012-04-11 20:13:42

你永远不会直接推进程序计数器- CPU通过执行你的程序为你做这件事。作为程序员,您可以通过执行各种跳转指令(有条件的、无条件的、跳转到子例程等)来操纵程序计数器。当您需要向程序计数器添加偏移量时,一个特定的情况是当您分支位置无关的代码时。然而,即使在这种情况下,您也没有将指令的大小添加到程序计数器:而是通过执行“分支到相对地址”来提供您想要跳转到的位置的偏移量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10105530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档