是否可以修改或访问程序计数器?

Ami*_*mar 3 embedded assembly program-counter

在阅读程序计数器时,我开始知道程序计数器的特殊之处在于无法直接修改其值.

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

Cli*_*ord 9

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

通常没有LD PC,addr指令,但这正是JMP addr如此,所以不能直接修改它的值.但是,如果不修改代码的执行路径,则无法修改其值 - 从指定的地址继续执行.

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

不同的处理器和体系结构在许多方面可能表现不同,我上面提到的指令助记符是"通用的",并不是指任何特定的指令集.