教程00: 准备工作 | 向前 |
---|
每一个教程都会提供代码和磁盘映像,你可以直接使用。如果你想从源码编译,请确保使用了正确的编译器和编译条件。
除了GCC之外的编译器可能无法编译代码,因为在代码中使用了unsigned long long
(C99)和GCC的一些扩展:__asm__
、__attribute__
、__extention__
,还有GCC的内嵌汇编。因此,其它的编译器可能不能工作,或者你必须自己找到它们的替代品。编译器必须支持32位,为了简化代码我假定了字节长,16位的编译器如TC之类的不能用来编译。
至于Windows用户,你可能需要Cygwin以提供Windows下的posix环境,但我不能保证它能给你正常的结果。这里有一个替代的办法,你可以在你的Windows上安装一个虚拟机软件,再在上面安装Linux,你就可以再上面编译代码了(反正你迟早会用到虚拟机的)。
为了一步步地跟随教程,你需要一个虚拟机软件,除非你疯狂到用你自己的系统乱搞。本教程里使用了VMWARE,你可以使用其它可获得的软件。
最好知道一些关于Makefile的东西。如果你熟悉内存寻址、中断、异常、GDT、IDT、LDT、分页、存取端口之类的会很有帮助,或者来拉我一把也行。三卷《Intel Architecture Software Developer's Manual》和《Intel 80386 Programmer's Reference Manual》最好在你手边,你可以从Intel 网站上下载,或者在网上找找它们的HTML版本。
无论如何我会尽我最大地努力来把这些吓人的玩意解释清楚,但你应该熟悉C语言,并且了解16味模式下汇编的写法,你应该熟悉当far call发生或中断返回时堆栈的变化之类的东西。
市面上关于C的书汗牛充栋,但关于保护模式下汇编编程的书吗,就想哈雷彗星一样,每76年才能瞅一眼……
如果你对*nix-like系统不陌生就更好了,像知道什么是inode, super block之类的,但不是要紧的东西。
教程00: 准备工作 | 向前 |
---|
你可以自由使用我的代码,如有疑问请联系我。