在我们学校最可怕的课程中,我们正在构建类似Linux的操作系统。我们在x86处理器IA32架构上构建它,并使用PIC-8259。无论如何,我们已经完成了GDT,PIC,IDT和Paging的设置,我们能够接收并打印linux中的前19个异常,如下所示;
void divide_by_zero(void)
{
printf("EXCEPTION 0:-you divided by zero");
while(1){} // will halt later
}
上面的异常函数只打印消息,我想扩展它以便打印出发生错误的文件和行号,就像编译时gcc所做的那样。我还想打印出通用寄存器和标志,如果可能的话,例如edx,ecx,DS,SS等。我卡住了,我不知道如何获取/追溯行号和文件一个程序已达到上述功能。我们有太多的文件被makefile编译,并且一些错误如分页错误没有显示出来。如果他们这样做,他们只是警告