当跳到main32
(我的32位入口点)时,QEMU开始不断地重启内核,就像循环一样。
这是来自一个自定义OS项目,该项目由2个阶段的引导程序和内核组成,这是有问题的。作为x86模拟器,我正在使用QEMU。
在禁用中断,激活A20线并设置GDT(以16位)之后,内核通过32位指令跳入了新的代码段,以通过VGA打印一些字符,或者至少这是我的意图
跳转或标签可能有误,因为仿真器刚刚开始再次遍历引导加载程序代码,以16位打印一些消息,准备32位转换,然后返回到QEMU引导消息,循环。
我以为远跳正在跳到先前的地址并继续从那里执行,但是在main32
标签之后编码一个无限循环不会引起启动循环,在{之后可以很好地保持在无限循环中{1}},显示预期的控制流。
这是main32
:
kernel.asm
有人知道为什么会这样吗?标签和地址对我来说似乎没有错。