中断跳转是计算机处理过程中的一种重要机制,当有中断请求时,计算机会立即停止正在执行的程序,并跳转到特定的中断向量地址处,执行相应的中断处理程序。而在执行完中断处理程序后,CPU需要恢复中断前的执行现场,并回到中断前的程序继续执行,那么此时程序执行的地址应该从哪里开始呢?
在中断处理程序执行结束后,CPU需要回到中断前的程序继续执行,这时候CPU需要知道中断前程序执行到哪里。因此在中断处理程序执行前,CPU会将当前程序执行的地址保存起来,存放在堆栈中,该地址即为中断返回地址。而在中断处理程序执行完毕后,CPU会从堆栈中取出中断返回地址,并跳转到该地址处继续执行程序。
因此,中断处理程序执行结束后,程序执行的地址应该从中断返回地址开始。
在中断处理程序执行过程中,为了保护中断前程序的执行现场,CPU会将中断前程序执行时的状态(CPU寄存器)保存下来并放在堆栈中。而在中断处理程序执行完毕后,CPU需要恢复中断前程序的执行状态,因此需要将之前保存的CPU状态从堆栈中取出,恢复到CPU寄存器中。
由于在中断处理程序执行过程中可能会对一些寄存器进行修改,因此在中断处理程序执行完毕后,CPU要将中断处理程序结束前的状态恢复到CPU寄存器中,在执行下一条指令时才能确保程序执行的正确性。
在中断处理程序执行结束后,需要将中断返回地址从堆栈中取出并跳转到该地址处继续执行程序。堆栈是一种后进先出的数据结构,因此在中断处理程序执行前,CPU会将当前程序执行的地址保存在堆栈中,并将堆栈指针指向该地址。而在中断处理程序执行结束后,CPU需要将堆栈指针恢复到中断前的状态,以便正确地取出中断返回地址。
因此,中断跳转以后地址从中断返回地址处开始执行。同时,CPU需要将中断前的堆栈指针恢复到中断处理前的状态,以确保正确地取出中断返回地址。