在阅读程序计数器时,我开始知道程序计数器的特殊之处在于无法直接修改其值。
是否有任何间接方式来访问/修改程序计数器的内容?
答案 0 :(得分:9)
您必须明白,如果修改PC,则执行的下一条指令将是新PC地址的指令。这只是一个无条件的跳转,所有处理器都有这样的指令。
通常没有LD PC,addr
指令,但这正是JMP addr
的作用,因此不能直接修改其值。但是,如果不修改代码的执行路径,则无法修改其值 - 从指定的地址继续执行。
在大多数情况下,也可以间接地进行,例如将堆栈指针设置为包含新地址的位置并调用RET返回指令。
不同的处理器和体系结构在许多方面可能表现不同,我上面提到的指令助记符是“通用的”,并不是指任何特定的指令集。
答案 1 :(得分:4)
无条件跳转指令直接修改PC的值。