写操作系统用的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和規則文件;下回再搞;
總結
以上是生活随笔為你收集整理的写操作系统用的C语言和写应用程序的C语言不是一个的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超图建立空间数据库
- 下一篇: VS2019 开发第一个Windows驱