在 CPU 不断执行指令个过程中,各种前缀的上下文(执行环境的状态)会在不断的变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前的正确的执行环境,继续正常的普通控制流的执行。
在 CPU 不断执行指令的过程中,各种前缀的上下文(执行环境的状态)会不断地变化。如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态(比如突变或函数调用前一刻的指令寄存器,栈寄存器和其他一些通用寄存器等内容),并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。这是由于完成与突变相关的执行会破坏突变前的控制流上下文(比如上述各种寄存器的内容),导致如果不保存之前的控制流上下文,就无法恢复到突变前正确的执行环境,继续正常的普通控制流的执行。
对于异常控制流的上下文保存与恢复,主要是通过 CPU 和操作系统(手动编写在栈上保存与恢复寄存器的指令)来协同完成;对于函数转移控制流的上下文保存与恢复,主要是通过编译器(自动生成在栈上保存与恢复寄存器的指令)来帮助完成的。