はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
12月 26 (火曜日) 2006
10:03
六日目3
 
六日目 [5] 終了〜。

・・・うむむ。たしかにここいらへんはむずかしいなぁ。
でも、この本はできるだけ説明をしようとしているのでそう見えるだけかも。少なくともこのセクションは、

・IDTを設置して、割り込みを受け付ける準備をしたぞ〜。
・CPUの割り込み受付ピンは一本しかないので補助の回路が付いてる。
・補助回路を初期設定しないといけないんだぞ〜。
・補助回路はPIC0、PIC1の二つあるぞ〜。
・まずはPIC0、PIC1に、「初期化中だから一旦全ての割り込みを禁止」にさせろ。(IMRの設定)
・PICの設定開始!
・IPC0、PIC1には四つの設定項目がある。(ICW1〜ICW4)
・ICW1、ICW3、ICW4は、まあ特殊なことしないなら普通は決まった値を設置する。
・で、肝心なのがICW2。つまり、これで「割り込みが来たら、どこを見ればいいか?」と設定する。
・IPC0(割り込み0〜割り込み7を担当)には、「割り込みがきたら0x20〜0x27を見ろ!」と設定。
・IPC1(割り込み8〜割り込み15を担当)には、「割り込みがきたら0x28〜0x2fを見ろ!」と設定。
・割り込みの設定ができた〜! 割り込みの受付を再開していいぞ〜(IMRを再設定)

・・・とまあ、こういうプログラムなわけね。なるほど〜。
 
30日を過ぎたBlogにはコメントできません。

Referer  (2)
09:32
六日目2
 
六日目、[4]。

なんと中ボスらしい!
(ところでアナタにとって中ボスといえばなに!? 私の場合はやっぱりフドウミョウオウだったりします。←メガテンマンセー)

うーむ。これはようするに、前回出てきたGDT表。この表の各項目の設定方法の説明だな。

 ・セグメントの大きさ
 ・セグメントの開始番地
 ・セグメントの属性

この三つで一つの行になっているわけか。その理屈自体はまあ、よくわかるな。

・・・で、問題点。なるほど。過去の資産(80286)との互換性を維持するために、えらくややこしい(むずかしいというよりは)方法でないといけないんだな。(インテルのCUPが嫌いだっていう人は、こういう部分に泣かされた人達かな???)
たとえばだけど、そういうちょっとヘンテコな仕様じゃなかったら、きっとこんなんでいいはず。


struct SEGMENT_DESCRIPTOR {
dword *base; ;ベースアドレス用。番地なので32bit
dword limit; ;0〜4GBまでなので32bit
short access; ;12bitだけ必要だが16bit
};



base、limit、access。おのおの設定に必要な数値から考えるとこれで十分なはずだけど、実際にはCPUがややこしい仕様になっていて、数値を別々に割って設定しなくてはいけないって感じかな??
 
30日を過ぎたBlogにはコメントできません。
08:32
六日目
 
六日目 〜3。 終了〜。

C言語で書かれたプログラムのソースは大抵いくつものファイルに分かれていますね。それはどういう理屈なのかってこと。

ここいらへんはだいたいOKかな?

ツルっと読み終わりました。
 
30日を過ぎたBlogにはコメントできません。
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.