寫作業系統用的C語言和寫應用程式的C語言不是乙個

2021-10-05 14:08:07 字數 1611 閱讀 8079

我以前看一本書,名叫 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標頭檔案和庫拷到操作的臨時目錄;還是不能構建出.bim檔案;它還有乙個規則檔案.rul;

到此就不能執行;必須按作者提供的光碟內容的目錄結構,以及makefile檔案,才能構建**;自己拷工具和**檔案到單獨目錄構建的話需要自己寫makefile和規則檔案;下回再搞;

C語言寫的作業系統短作業優先演算法

短作業優先的演算法思想 通過對執行時間的排序然後比較,執行時間短的程序優先執行,第乙個程序的開始時間等於到達時間,完成時間 開始時間 服務時間,當下乙個程序的開始時間 該程序的完成時間時,下乙個程序的開始時間 上乙個程序的完成時間,周轉時間和帶權周轉時間根據公式可以得出 一下是演算法的原始碼 inc...

用C語言寫簡單的學生系統

c語言學了大概2個月,自己摸索的了解了一些c語言的結構和方法,正好最近學校有一次對向學生的比賽,所以就自己看看,和在網上查查,自己簡單是做了乙個學生管理系統。首先我們來看它的一些功能 2.1學生的成績寫入 寫入學生的成績以及缺勤情況,並把它傳輸給乙個文字檔案,其中我們要輸入學生的學號,如果學號不符合...

寫自己的作業系統 個人實踐

近期開始看於淵的 自己動手寫作業系統 這本書,剛開始看就發現做系統的引導盤居然是軟盤!心裡那個汗啊!如今都是u盤了,誰還用軟盤。於是考慮用u盤。於是開始下面步驟 1 既然書上說給先要把軟盤做引導盤,那我就相似地把u盤做成引導盤。在網上找了半天,發現usboot,於是就用它給自己的u盤做了乙個引導盤。...