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