无效的操作码错误(int 0x06)

时间:2014-08-22 04:00:42

标签: kernel

当我从main.c调用C函数时,该函数位于不同的* .c文件中,抛出运行时异常。我捕获中断6(无效的操作码)。我不明白。 gcc没有错误。我多次检查了这个功能,但我没有看到任何错误。因为我正在研究内核开发,所以机器上没有操作系统。谢谢。

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

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

1 个答案:

答案 0 :(得分:0)

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