我的内核在执行第一页错误时崩溃。 我的页面错误处理程序如下所示:
asm_page_error_wrapper:
PUSHA
movl %esp, %esi
pushl 48(%esi)/*esp,pusha has already been calculated*/
pushl 32(%esi)/*error*/
CALL page_error_interrupt
popl %ecx
popl %ecx
POPA
addl $4, %esp
IRET
在gdb中,它崩溃在“pushl 48(%esi)
”。
以下是bochs日志所说的内容:
我不知道原因。
答案 0 :(得分:2)
从屏幕截图中可以看出,IDT
对于#GP处理程序条目无效。我不确定你是如何得出崩溃的结果是pushl 48(%esi)
。这是可能的,但似乎并非如此。
如果模拟器产生不同的结果,可能只有几个原因: