摘要:
由于各种原因,原本计划的Orange’s 一个操作系统的实现的学习中断了几个月。现在还是着手继续研究这本书。收到了几个学习这本书的朋友的信息,大家可以加入作者的google群或者我建的QQ群:108148059,看这本书的朋友来交流下! 阅读全文
摘要:
大家可以加入作者的google groups本人QQ:280372068 阅读全文
摘要:
下述代码展示了如何启动分页机制,及页目录及页表项的初始化: ; ========================================== ; pmtest6.asm ; 编译方法:nasm pmtest6.asm -o pmtest6.com ; ========================================== %include "pm.inc" ; 常... 阅读全文
摘要:
A.分页机制概述(如图) Segmentation部分为分段机制,逻辑地址通过段选择子,从GDT中对应的段描述符中确定段基址,然后在加上偏移确定线性地址 Paging部分为分页机制:物理地址=f(线性地址) 分页机制使用两级转换表,第一级叫做页目录(Page Directory),存储在一个物理页中.大小为4KB,每个表项4字节, 共有1024个表项(Pag... 阅读全文
摘要:
完成有效的特权级的转移及使用局部任务返回实模式: ; ========================================== ; pmtest5.asm ; 编译方法:nasm pmtest5.asm -o pmtest5.com ; ========================================== %include "pm.inc" ; 常量, 宏,... 阅读全文
摘要:
我们在进入ring3后,实现了高特权级到低特权级的转移,我们在原有代码上稍作修改,实现低特权级到高特权级的转移: 修改的代码如下: 1.修改调用门描述符和选择的特权级 ; 门 目标选择子,偏移,DCount, 属性 LABEL_CALL_GATE_TEST: Gate SelectorCodeDest, 0, 0, DA_... 阅读全文
摘要:
在上一节的代码中稍作修改,通过转移进入ring3: ; ========================================== ; pmtest5a.asm ; 编译方法:nasm pmtest5a.asm -o pmtest5a.com ; ========================================== %include "pm.inc" ; 常量... 阅读全文
摘要:
A.关于堆栈 jmp指令:不影响堆栈 call指令:影响堆栈,对于短调用来说,call指令执行时会将下一条指令的eip压栈,到ret指令时,这个eip会被从堆栈中弹出。 对于长转移;还会将cs压栈 B.call指令堆栈示意图 假设函数foo(param1,param2,param3) 1.短调用时堆栈示意图 ... 阅读全文
摘要:
在上次的代码基础上,添加一个代码段作为通过调用门转移的目标段。了解一下调用的工作方法,代码分析如下: 红色标识部分为新增代码 ; ========================================== ; pmtest4.asm ; 编译方法:nasm pmtest4.asm -o pmtest4.com ; ================================... 阅读全文
摘要:
A.门描述符结构 0、1字节( 0~15):偏移1 2、3字节(16~31):选择子 4字节(32~39):5、6、7位为0,0~4位为Param Count 5字节(40~47):0~3位为TYPE,4位为S(=0表示门描述符),5~6位为DPL,7位为P 6、7字节(48~63):偏移2 门描述符主要定了目... 阅读全文