『作りながら学ぶOSカーネル』 Chapter 06を読んでのつぶやき

この章は細かなところで誤りが多いです。。

p169

セグメント領域の大きさを0に指定してもいいし、0xFFFFFにしても指定できる。

Limitはオフセットとして取り得る最大値なので、大きさ=(Limit+1)という関係があるはず。以下同様の表現がたくさん。。

図6-1

0x12003はLimit以下のアドレスなので、四角の下端(?)であるべき。

p171

もしオフセットに0xFFFCを指定して、こちらにダブルワードのデータを使って、読み書きを試みたとすると、(中略)1バイトだけあふれてしまいます。

図6-1において0x12003が「はみ出ている」のが正しいのであれば、この説明どおりだけれど、実際は4バイト目が0x12003で範囲内となり、誤った説明です。
0xFFFDからのワードアクセスも同様。

図6-4

  • 「接近」は「アクセス」の方が通りが良いでしょうね。
  • 右下の箱の中のCSはDSですね。

図6-5

この図が悪いというわけではないけれど、メモリを表す図でアドレス高位、低位の上下関係は1つの本の中では統一して欲しいと思う。さらに言うと、MSB/LSBと左右方向も。

2009年6月10日追記

  • この図において上下関係は上が低位アドレス、下が高位アドレスになっており、他とはほぼ同じでした。図7-3(これでは上が高位アドレス)と早とちりしてしまいました。
  • 図6-6右側の図ではトップにあるのはEIPですが、これは誤記の類ですね。