跳到32位保护模式入口点会使QEMU不断重启

时间:2019-07-16 16:01:11

标签: assembly x86 qemu osdev protected-mode

当跳到main32(我的32位入口点)时,QEMU开始不断地重启内核,就像循环一样。

这是来自一个自定义OS项目,该项目由2个阶段的引导程序和内核组成,这是有问题的。作为x86模拟器,我正在使用QEMU。

在禁用中断,激活A20线并设置GDT(以16位)之后,内核通过32位指令跳入了新的代码段,以通过VGA打印一些字符,或者至少这是我的意图

跳转或标签可能有误,因为仿真器刚刚开始再次遍历引导加载程序代码,以16位打印一些消息,准备32位转换,然后返回到QEMU引导消息,循环。

我以为远跳正在跳到先前的地址并继续从那里执行,但是在main32标签之后编码一个无限循环不会引起启动循环,在{之后可以很好地保持在无限循环中{1}},显示预期的控制流。

这是main32

kernel.asm

有人知道为什么会这样吗?标签和地址对我来说似乎没有错。

0 个答案:

没有答案