精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: abcdefghi.bbs@ptt.cc (蠍子), 信區: programming > : > 例如硬碟中的Boot loader (Stag 1)就有大小要為512 Byte, > : > 特定位置要有特定資料的需求 > : Boot Sector 的內容是有特定標幟要標明這是一段可執行的 boot > : program , 但並非 C 語言程式就造不出來. > 不同的CPU有不同的Assembly, 跟計算相關的部份 C 可以應付, > 和Address相關的部份用 C 配合 Link Editor 也可以處理, 不過 > 有些控制 CPU Status 的指令, 就只能用 Assembly 了, 例如 > 在Bootstrap的時候要把Register和Cache都設好, 或者在OS中的 > Critical Section也要把Interrupt關起來, 一般Boot Section > 只做一些簡單的工作, 用Assembly就好了, 如果真的想多做一點 > 事再配合一些C Function, 不過在load整個系統時, 一樣得用 > Assembly才行, 因為要jump到主系統時, 還是得控制CPU的Status. 說得是正解. 但 gsj 偏要舉 stag 1 的 sector 0 boot, 那一段沒有 這麼複雜的名堂, 是典型的 load & go , 只是前面幾個 byte 要有特 別的記號. -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234