0

我的自定义内核中有一个 C 函数,它在左上角打印 DEBUG。

我使用不同的 cs 调用该函数:

asm("lcall $0x28, $0x0"); 

(代码在 0x28 代码段的开头复制)。

在打印 DEBUG 消息的 c 函数中,我使用以下命令返回:

asm("lret;");

但是当我执行代码时,它在显示调试消息后的三倍故障毫秒。如果我这样做:

asm("call $0x08, $0x100"); 

有用。($0x08 是覆盖整个内存的内核代码,$0x28 是从 0x100 开始的“调试”程序代码段)。

我想问题来自 gcc asm 生成,就好像我执行相同的返回但来自 NASM,“retf”正在工作并且没有三重错误。

4

0 回答 0