在阅读程序计数器时,我了解到程序计数器的特殊之处在于无法直接修改其值。
是否有任何间接的方式来访问/修改程序计数器的内容?
您必须了解,如果您修改 PC,则执行的下一条指令将是新 PC 地址处的指令。那只是无条件跳转,所有处理器都有这样的指令。
通常没有LD PC,addr
指令,但这正是JMP addr
它的作用,所以不能直接修改它的值是不正确的。但是,您不能在不修改代码的执行路径的情况下修改其值 - 执行从指定的地址继续。
在大多数情况下,也可以间接执行此操作,例如将堆栈指针设置为包含新地址的位置并调用 RET 返回指令。
不同的处理器和架构可能在许多方面表现不同,我上面建议的指令助记符是“通用的”,并不打算引用任何特定的指令集。
无条件跳转指令直接修改PC的值。