5

在阅读程序计数器时,我了解到程序计数器的特殊之处在于无法直接修改其值。

是否有任何间接的方式来访问/修改程序计数器的内容?

4

2 回答 2

12

您必须了解,如果您修改 PC,则执行的下一条指令将是新 PC 地址处的指令。那只是无条件跳转,所有处理器都有这样的指令。

通常没有LD PC,addr指令,但这正是JMP addr它的作用,所以不能直接修改它的值是不正确的。但是,您不能在不修改代码的执行路径的情况下修改其值 - 执行从指定的地址继续。

在大多数情况下,也可以间接执行此操作,例如将堆栈指针设置为包含新地址的位置并调用 RET 返回指令。

不同的处理器和架构可能在许多方面表现不同,我上面建议的指令助记符是“通用的”,并不打算引用任何特定的指令集。

于 2011-12-26T12:41:48.860 回答
4

无条件跳转指令直接修改PC的值。

于 2011-12-26T11:34:36.923 回答