我知道程序计数器总是指向下一条指令的内存位置,但是在程序结束时,程序计数器的值是什么?该值是否与程序中运行的最后一条指令相同?
3vpjnl9f1#
这取决于你所说的“结束”是什么意思。在一个多任务系统中,就CPU而言,程序可能还在运行,已经转移到下一个任务了。在这种特殊情况下,PC将包含例程加载到其中以转移到下一个任务的地址。如果你说的是操作系统这个大程序,或者是在ATMEL这样的小芯片上运行的任何一个程序,它可能在内存中的某个地方包含一个地址,而这个地址恰好包含一个HALT指令。根据芯片的不同,它可能会关机,或者只是挂起,直到外部信号重置芯片为止。因此它将包含芯片启动时默认的值。
1条答案
按热度按时间3vpjnl9f1#
这取决于你所说的“结束”是什么意思。在一个多任务系统中,就CPU而言,程序可能还在运行,已经转移到下一个任务了。在这种特殊情况下,PC将包含例程加载到其中以转移到下一个任务的地址。
如果你说的是操作系统这个大程序,或者是在ATMEL这样的小芯片上运行的任何一个程序,它可能在内存中的某个地方包含一个地址,而这个地址恰好包含一个HALT指令。根据芯片的不同,它可能会关机,或者只是挂起,直到外部信号重置芯片为止。因此它将包含芯片启动时默认的值。