繁体   English   中英

程序计数器?

[英]Program Counter?

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

那个东西叫做指令指针。 一旦处理器解码当前指令,它就会找到它占用多少字节,并知道要添加到当前指令指针值多少以前进到下一条指令,以便当当前指令执行时,处理器知道下一步该做什么。

因此,例如处理器以指令指针存储值15开始,如下例所示 - 它看起来发生在该地址的情况,恰好有一个占用5个字节的指令,没有问题 - 它将当前值加上5产生20,因此指令指针现在存储值20,然后处理器执行当前指令。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM