【发布时间】:2016-08-20 02:11:43
【问题描述】:
指令指针寄存器如何从错误读取或错误跳转中恢复?
内核调用init 代码,该代码将调用main() 程序。如果main() 程序发生堆栈溢出或其他什么,并且RIP/EIP/IP 填充垃圾,操作系统如何恢复CPU 寄存器?
CPU只有一个指令指针对吗?因此,在我看来,从溢出中恢复似乎是不可能的。
【问题讨论】:
-
单CPU不同的上下文。
-
如果 CPU 执行的指令产生越界或非法读/写,则内存管理硬件将产生中断并将控制权转移到适当的预配置处理程序,而不管错误操作的地址或IP内容。
标签: c assembly x86 operating-system kernel