2009年10月11日日曜日

「作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践 ~ 金 凡峻」 まとめ

「作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践 ~ 金 凡峻」

とりあえず8章までまとめておきます。

  1. 最初はNASMのバージョンを間違えてはまりました。
    詳しくはこちらをどうぞ。
  2. 著書が指定しているバージョンよりもBochs 2.4.1のほうが便利です。
    詳しくはこちらをどうぞ。
  3. Bochsデバッガでブレークポイントを設定できます。ステップ実行するとより理解が深まります。
    詳しくはこちらをどうぞ。
  4. 誤植(と思われる部分)が多いですね(本当に誤植かどうかは出版社に確認してください)。
    1. pp.16(ハッチング部分の1行目)
      0x7c0:0xf → 0x7c0:0x5
    2. pp.63 (1行目、4行目)
      48バイト → 48ビット
    3. pp.119 (1行目)
      mov byte [es:edi] 0x0 → mov byte [es:edi] 0x6
    4. pp.179(図6-6 右)
      ESP → EIP
    5. pp.195 (2番目のハッチング部分直後の段落「現在のESPには、… はずです。」)
      最初のハッチング部分で

      lea esp, [PM-256]

      と明らかにESPを変更している。ESPがPM_Startであるはずがない。
    6. pp.211(isr_128_soft_intのコードで2箇所不足)

      pushad
       ↓
      pushad
      push eax ;; 追加

      mov GS, ax
       ↓
      mov GS, ax
      pop eax ;; 追加

      理由:
      pp.219の3行目で、すぐにPOP命令を用いてEAXを復元します。と言っている。
    7. pp.227 (図の右部分)
      論理アドレス → 物理アドレス
  5. 8章サンプルコードデバッグ中
以上、8章までまとめです。