Brokenthorn's Known Bugs

来自osdev
跳到导航 跳到搜索

Brokenthorn的系列教程是更好的一些OSDev教程。 它们教授更好的编码实践,并且非常深入。 像所有教程一样,其中也有一些错误。 以下是最常见的:

CR0.PE描述错误

在OSDev8中,CR0.PE(位0)被错误地描述为将处理器设置为32位模式。 设置CR0的位0不会将处理器置于32位模式。 对32位代码段执行远跳将使处理器处于32位模式。 跳远本身仍将以16位模式执行。

使用内联ASM的IRET

在OSDev15中,提供的ISR处理程序使用内联asm从C函数iretd:

void int_handler_5 () {
 
	_asm add esp, 12
	_asm pushad
 
	// do whatever...
 
	_asm popad
	_asm iretd
}

这会对所使用的调用约定进行假设,通常不是一个好主意。 可以在这里找到更好的选项。

缺少分号

在OSDevPE中,IMAGE_THUNK_DATA结构体中缺少分号

分页代码问题

在OSDev18中,分页代码存在一些问题。 它直接访问物理内存而不映射它。 你可以使用它作为基础,但实现递归分页。