『作りながら学ぶ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ですが、これは誤記の類ですね。