摘要:
进内核的确是个麻烦的活。从16跳到32后,先得熟悉一下32的汇编环境。其中主要的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)32位的指令没有太大的变化。但是在段处理上有了很大的变化。首先,原先由段机制和偏移确定地址的机制由描述符来完成了。然后,就是32位保护模式特有的特权机制。在代码和代码之间,代码和数据之间跳转需要使用一种叫做门的描述符来实现。这种描述符是一个8B的数据,里面包括了一个段的属性。下面 阅读全文
摘要:
现在看的是怎样将系统引导进编制的操作系统内核。以《orang‘s os 一个操作系统的编制》为参考。首先要做的就是在存储介质的前512个字节上大作文章,写程序。而进内核,一种方案是自己写个16位汇编程序,放进512。用这个程序去引导内核,就像开源项目grub一样。但很明显,这样做起来,无论从技术和代码量上都不易 。我学着书中所说,还是用dos引导吧。先把原型做出来,再在上面增添功能。使用快速开发的思想,编制我的操作系统。 一般对于80386以上的内核中,程序一般运行在32位环境中(64位,晕!不谈,那不是给人用的)。所以还需要先从16为跳到32位。 总之,上面的步骤主要有三。 一、将存储介质前 阅读全文