写操作系统用的C语言和写应用程序的C语言不是一个

    我以前看一本书,名叫 30天自制操作系统;大概翻了一下,感觉也不是太难;因为比如,它有一整章在讲,C语言指针、C语言画一个矩形;你要是熟悉C语言的话,指针肯定理解;在没有窗口的情况下,用Turbo C 2.0画一个矩形也不是什么难事;
    后来有一天准备照书实践一下,仔细看了一下,原来问题不是一般的多;首先一个,不能用写应用程序的C语言去写一个操作系统;因为C本身很多功能依赖于操作系统,你去写一个操作系统的时候这个时候还没有操作系统,像C最常用的printf函数这个时候是不能用的;如果硬要运行此类C功能,会导致保护性错误,CPU罢工。
    原作者的意思是,不管你用C或C++来写一个操作系统,如果你不能理解C或C++是如何转换为汇编语言的,你是无法写出一个操作系统的;他肯定是对的。
    原来原作者是自己从gcc改装了一个C编译器来,然后还附带了一堆工具;才能把代码构建为可运行的操作系统代码。
    下面按原书附带的工具,来构建它的第一个C程序;他提供的编译器名为cc1.exe;就是把他提供的东西拷贝到一个单独的目录执行了看;
    
    一共有6个步骤把一个C语言程序构建为操作系统可用的代码;
   1 使用cc1.exe从bootpack.c生成bootpack.gas;
   2 使用gas2nask.exe从bootpack.gas生成bootpack.nas;
   3 使用nask.exe从bootpack.nas生成bootpack.obj;
   4 使用obi2bim.exe从bootpack.obj生成bootpack.bim;
   5 使用bim2hrb.exe从bootpack.bim生成bootpack.hrb;
    到此做成了机器语言;那么书中的汇编程序是nasm语法的;
   然后使用copy命令将asmhead.bin与bootpack.hrb结合起来,做成haribote.sys;

 

步骤1

cc1.exe没有帮助的,但它应该是gcc的语法;操作了几次,把.gas做出来;.gas就是汇编代码了;

步骤2,生成.nas;

步骤3,生成.obj;

拷过来它的一个工具,执行一步操作;到此没有错;

步骤4,生成.bim;

一直出错;此步要链接一些C库;是在原书附带的光盘;

把这些C头文件和库拷到操作的临时目录;还是不能构建出.bim文件;它还有一个规则文件.rul;

到此就不能执行;必须按作者提供的光盘内容的目录结构,以及makefile文件,才能构建代码;自己拷工具和代码文件到单独目录构建的话需要自己写makefile和规则文件;下回再搞;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章