天衣有缝

冠盖满京华,斯人独憔悴~
posts - 35, comments - 115, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

自己动手写内核(环境篇)(原创)

Posted on 2007-05-08 07:32 天衣有缝 阅读(2201) 评论(0)  编辑 收藏 引用 所属分类: os stuff

0课:环境需求

声明:转载请保留

译者http://www.cppblog.com/jinglexy

原作者:xiaoming.mo at skelix dot org

MSN & Email: jinglexy at yahoo dot com dot cn

GCC
Skelix
使用c语言编写,当然也用了汇编语言(at&t风格),在linux下使用gcc编译。

[root@root ~]$ gcc -v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux
Thread model: posix
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)

在每篇教程中都给出了源程序和软盘映象文件,你可以直接使用它们。如果你需要编译这些源程序,编译环境必须正确。我们推荐的环境是linux2.6.x内核,gcc3.x编译器。

由于在源程序中使用了__asm__, __attribute__, __extention__,以及gcc内嵌汇编,还有unsigned long long(直到C99才开始支持);如果你使用了其他编译器,需要修改对应的源程序。且编译器必须是32位,这样做的目的是保持源程序简洁清晰。

对于windows用户可以使用 cygwin,它提供了windows下的linux环境。不过我没有尝试使用它,因为我的电脑上没有安装windows操作系统。也可以在你的windows系统上安装一个虚拟机上的linux,如果你的电脑足够快的话。


VMWARE

为了运行教程中的范例,一个虚拟机必不可少,virtual pc2007已经可以免费使用了,在M$的官方网站上可以找到下载。当然也可以使用qemubochs之类的虚拟机。推荐的虚拟机是VMWARE

Things Are Good To Know

如果能看懂Makefile最好了,这是*nix程序员必须掌握的一项基本知识。另外,如果你熟悉内存地址映射,中断,异常,GDTLDTIDT,分页机制,范围端口就更好了。当然不懂也没关系,Intel的三卷手册是案头必备:http://www.intel.com

IA-32 Intel Architecture Software Developer's Manual Volume1: Basic Architecture
IA-32 Intel Architecture Software Developer's Manual Volume2A: Instruction Set Reference: A-M
IA-32 Intel Architecture Software Developer's Manual Volume2B: Instruction Set Reference: N-Z
IA
-32 Intel Architecture Software Developer's Manual Volume3A: System Programming Guide Part1
IA-32 Intel Architecture Software Developer's Manual Volume3B: System Programming Guide Part2

读者对这些东西不必紧张,我在教程中会解释相关的知识。c语言和汇编是最基本的要求,能够很清楚的了解什么是堆和栈。关于c语言的数据成千上万,但是保护模式方面的书籍比哈雷慧星还少,据说每76年可以买到一本,如果你足够幸运的话:)

风格约定

 

原文中的格式被擅自去掉了,翻译后的风格应该可以一看就懂。

 

 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理