Brokenthorn's Known Bugs

来自osdev
Zhang3讨论 | 贡献2022年3月12日 (六) 06:01的版本 (创建页面,内容为“Category:FAQBrokenthorn的系列教程是更好的一些OSDev教程。 它们教授更好的编码实践,并且非常深入。 像所有教程一样,其中也有一些错误。 以下是最常见的: == CR0.PE描述错误 == 在OSDev8中,CR0.PE(位0)被错误地描述为将处理器设置为32位模式。 设置CR0的位0不会将处理器置于32位模式。 对32位代码段执行远跳将使处理器处于32位模式。 跳远本身仍将以…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

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