> ==>發信人: 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