WriteOS: 关于操作系统进入保护模式的总结
2013-03-31 20:35
330 查看
转载:http://sleepycat.org/tech/os/protectmode
1 进入保护模式的代码分析
2 关于选择子(selector)的总结
3 mov byte [LABEL_DESC_CODE32 + 4], al
4 jmp dword SelectorCode32:0
5 参考资料
版本:NASM version 2.09.08
日期:2012-08-21
永久链接:http://sleepycat.org/tech/os/protectmode
?
目录:
本文简介1 进入保护模式的代码分析
2 关于选择子(selector)的总结
3 mov byte [LABEL_DESC_CODE32 + 4], al
4 jmp dword SelectorCode32:0
5 参考资料
本文简介
概要:总结关于操作系统进入保护模式的相关知识点版本:NASM version 2.09.08
日期:2012-08-21
永久链接:http://sleepycat.org/tech/os/protectmode
1 进入保护模式的代码分析
代码来自《自己动手写操作系统》一书. 在原有基础上加了些自己的注释.?
2 关于选择子(selector)的总结
selector 是对应的 GDT 相对于 GDT 起始位置的偏移量. GDT 的长度都为 8 byte, 故 selector 的值为 8 的倍数. 也因此, 其最低 3 位正常情况下应该全为零, 但实际上, 最后 3 位被用作标志符, 标志 GDT 或 LDT 等, 故在使用 LDT 时, 需要直接修改对应的值。
3 mov byte [LABEL_DESC_CODE32 + 4], al
[LABEL_DESC_CODE32 + 4] 表示 LABEL_DESC_CODE32 所在的地址, 加上 4 个内存单位(byte) mov byte [LABEL_DESC_CODE32 + 4], al 表示将 al 内容, 放置到 [LABEL_DESC_CODE32 + 4] 所在地址, 放置内容长度为 1 byte.
4 jmp dword SelectorCode32:0
SelectorCode32 => 选择子, 16 位, 被装入 cs. dword => 表示后面的偏移量为 32 位. 按保护模式方式寻址.
5 参考资料
http://www.360doc.com/content/11/0409/22/6580811_108479867.shtml
相关文章推荐
- 专注于操作系统29之从loader进入保护模式并分页
- 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3-b)
- 自己写操作系统2——进入保护模式
- 进入保护模式总结
- 一个操作系统的实现:关于保护模式和实模式的跳转和段描述符高速缓冲寄存器
- 操作系统开发系列—2.进入32位保护模式
- 操作系统开发之——进入保护模式
- 自制操作系统Antz day05——深入理解保护模式与进入方法
- 一个操作系统的实现:关于保护模式和实模式的跳转和段描述符高速缓冲寄存器
- 一个操作系统的实现(11)-让操作系统进入保护模式
- 一个操作系统的实现:关于保护模式和实模式的跳转和段描述符高速缓冲寄存器
- 操作系统开发系列—2.进入32位保护模式
- 写操作系统(七)执着 进入保护模式的准备
- 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3)
- NASM 纯汇编打造简单中文操作系统(2 init.asm初始化操作系统内存。进入32位保护模式)
- 桌面电脑操作系统开发笔记(4)——进入32位保护模式
- 关于〈保护模式〉(自已写操作系统)
- 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3)
- 自制操作系统Antz day04——进入保护模式 (下) 实现内核并从硬盘载入
- 写操作系统----3.进入保护模式