【问题标题】:Invalid opcode error (int 0x06)无效的操作码错误(int 0x06)
【发布时间】:2014-08-26 08:16:31
【问题描述】:

当我从位于不同 *.c 文件中的 main.c 调用 C 函数时,会引发运行时异常。我捕捉到中断 6(无效的操作码)。我不明白。 gcc 没有给出错误。我多次检查该功能,但没有发现任何错误。因为我是学Kernel开发的,所以机器上没有OS。谢谢。

编辑:我注意到按位运算符不接受变量作为右手表达式。当我使用一个值而不是 off 变量时,它可以工作。我该怎么办?

uint8_t off = OFFSET_FROM_BIT(frame);
frames[idx] |= (0x00000001 << off);

【问题讨论】:

  • 从我的角度来看,我也没有看到任何错误。如果您想获得答案,您必须提供更多信息。
  • 谢谢。您需要什么样的信息?

标签: kernel


【解决方案1】:

这个异常是因为我的 bootsec.bin 错误地加载了内核而引发的。它只加载了 kernel.bin 的 15 个扇区。但是,当最后一个 *.c 文件添加时,kernel.bin 变成了 30 个扇区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多