查看“Brokenthorn's Known Bugs”的源代码
←
Brokenthorn's Known Bugs
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[Category:FAQ]]Brokenthorn的系列教程是更好的一些OSDev教程。 它们教授更好的编码实践,并且非常深入。 像所有教程一样,其中也有一些错误。 以下是最常见的: == CR0.PE描述错误 == 在OSDev8中,CR0.PE(位0)被错误地描述为将处理器设置为32位模式。 设置CR0的位0不会将处理器置于32位模式。 对32位代码段执行远跳将使处理器处于32位模式。 跳远本身仍将以16位模式执行。 ==使用内联ASM的IRET== 在OSDev15中,提供的ISR处理程序使用内联asm从C函数iretd: <syntaxhighlight lang="C"> void int_handler_5 () { _asm add esp, 12 _asm pushad // do whatever... _asm popad _asm iretd } </syntaxhighlight> 这会对所使用的调用约定进行假设,通常不是一个好主意。 可以[[Interrupt_Service_Routines|在这里]]找到更好的选项。 == 缺少分号 == 在OSDevPE中,IMAGE_THUNK_DATA结构体中缺少分号 ==分页代码问题== 在OSDev18中,分页代码存在一些问题。 它直接访问物理内存而不映射它。 你可以使用它作为基础,但实现递归分页。
返回至“
Brokenthorn's Known Bugs
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息