写操作系统用的C语言和写应用程序的C语言不是一个
? ? 我以前看一本書,名叫 30天自制操作系統(tǒng);大概翻了一下,感覺也不是太難;因為比如,它有一整章在講,C語言指針、C語言畫一個矩形;你要是熟悉C語言的話,指針肯定理解;在沒有窗口的情況下,用Turbo C 2.0畫一個矩形也不是什么難事;
? ? 后來有一天準(zhǔn)備照書實踐一下,仔細(xì)看了一下,原來問題不是一般的多;首先一個,不能用寫應(yīng)用程序的C語言去寫一個操作系統(tǒng);因為C本身很多功能依賴于操作系統(tǒng),你去寫一個操作系統(tǒng)的時候這個時候還沒有操作系統(tǒng),像C最常用的printf函數(shù)這個時候是不能用的;如果硬要運(yùn)行此類C功能,會導(dǎo)致保護(hù)性錯誤,CPU罷工。
? ? 原作者的意思是,不管你用C或C++來寫一個操作系統(tǒng),如果你不能理解C或C++是如何轉(zhuǎn)換為匯編語言的,你是無法寫出一個操作系統(tǒng)的;他肯定是對的。
? ? 原來原作者是自己從gcc改裝了一個C編譯器來,然后還附帶了一堆工具;才能把代碼構(gòu)建為可運(yùn)行的操作系統(tǒng)代碼。
? ? 下面按原書附帶的工具,來構(gòu)建它的第一個C程序;他提供的編譯器名為cc1.exe;就是把他提供的東西拷貝到一個單獨(dú)的目錄執(zhí)行了看;
? ??
? ? 一共有6個步驟把一個C語言程序構(gòu)建為操作系統(tǒng)可用的代碼;
? ?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;
? ? 到此做成了機(jī)器語言;那么書中的匯編程序是nasm語法的;
? ?然后使用copy命令將asmhead.bin與bootpack.hrb結(jié)合起來,做成haribote.sys;
?
步驟1
cc1.exe沒有幫助的,但它應(yīng)該是gcc的語法;操作了幾次,把.gas做出來;.gas就是匯編代碼了;
步驟2,生成.nas;
步驟3,生成.obj;
拷過來它的一個工具,執(zhí)行一步操作;到此沒有錯;
步驟4,生成.bim;
一直出錯;此步要鏈接一些C庫;是在原書附帶的光盤;
把這些C頭文件和庫拷到操作的臨時目錄;還是不能構(gòu)建出.bim文件;它還有一個規(guī)則文件.rul;
到此就不能執(zhí)行;必須按作者提供的光盤內(nèi)容的目錄結(jié)構(gòu),以及makefile文件,才能構(gòu)建代碼;自己拷工具和代碼文件到單獨(dú)目錄構(gòu)建的話需要自己寫makefile和規(guī)則文件;下回再搞;
總結(jié)
以上是生活随笔為你收集整理的写操作系统用的C语言和写应用程序的C语言不是一个的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超图建立空间数据库
- 下一篇: vc2019切分位图图像带动态创建工具条