はりぼて日記
7月 30 (月曜日) 2007 | ||
19:14
|
15日目4
|
|
15日目4〜。
P307。 いよいよちゃんとしたマルチタスク。 ふむふむ。 ようするに、タスク切り替え専用のタイマを作って、こいつが 勝手に自動的に切り替えを繰り返すと。 これはむずかしくなかったぞ〜。 そんなわけで、やっとこさ15日目終了〜 |
||
16:29
|
15日目3
|
|
15日目3〜
まだP296・・・・orz えーっと・・・ちょっと整理してみよう。「今回のHariMainの一部」の表。 ・まず、なにもしない。初めて動くタスクなわけだから、ほとんどの レジスタは「0」でいいと。 ・tss_b.eip。eipは次に実行する命令の番地を管理してる。今回は task_b_mainという関数のアドレスを格納している。まあつまり、 今回初めてtask_b_mainを動かすんだから、この関数の一番最初の 番地を入れておくという感じね。 ・tss_b.eflags。eflagsはフラグの集まり。各ビットひとつひとつに 意味があるレジスタ。 えーっと。なになに?STIした後の値とな?? STIってなんだっけ・・・・ あー。そか。P89。割り込みの可否のレジスタね。 うーん・・・これ16進数で0x00000202なんて書いてあるから意味 わからんかった。これをP89の表&二進数に変換すると・・・
こういう値が入るわけね。(・・・なんだろ?この値??なんか意味があるのだろうか???) ・tss_b.esp タスクBが使うスタックの番地(開始番地?)のアドレスをセットすると。 (まあこれは当然だよね) ・es,cs,ss,ds,fs,gs ふーむ・・・。asmhead.nasと同じ?えとえと??? うえーーん!わかんねぇ!P134のDS、ES、SSの思い込みのこと?? ここはちょっと棚上げ・・・ P299 えーっと・・・ESP+4かぁ。 これはどういう意味かというと、P69参照。Cから渡された引数を 読みたい場合にこうするというだけ。 P301 「川合先生!秀吉君がまたかよって言ってます!」 (笑 |
||
7月 15 (日曜日) 2007 | ||
17:43
|
15日目2
|
|
ふむふむ。
まずはTSS構造体を定義する。 そしてその定義に従って二つの構造体変数を宣言。 んで、レジスタ退避意外の要素、TSSの設定変数に初期値を代入と。 で、これを実際のGDTに登録〜! ・・・あれ? リミットってなんだっけ?? あー! そっかそっか! 「このセグメントの大きさはいくつ」だ! 本来のセグメントはこれを自由に好きなように設定できるけど、 TSSはP292のとおり104バイトしかいらないから、その大きさつーことね。 ふむふむ。以上で準備がOKとなったわけね。 で、タスクの切り替え。 ・TRレジスタに現在のタスク番号?(実際にはTSS番号)*8を代入 ・あとは切り替えたいタスク番号にファージャンプ! なるほどなるほど! P296、 うーん。これは、パチンとタスクがタスク4に切り替わったとき、 全てのレジスタがこうなるということを設定するわけか。 今回は初めて切り替わるので、事実上初めて動き出すのと同じこと。 なので、ほとんどのレジスタは0なわけか。 (まあつまり初期値なので0にしとくかってレベルのはず。 |
||
12:52
|
15日目
|
|
15日目〜。
さーていよいよマルチタスクだ! マルチタスクは同時進行ではない。高速に切り替えているだけ。 忍者の分身の術と同じなわけですね。 ちなみに猿飛び佐助は実在しませんが霧隠れ才蔵は 実在したorモデルとなる忍者がいたとか・・・ ←超どうでもいい ふむふむ。TSSはセグメントの一種と。 ldtrは0に。iomapは0x40000000をとりあえず代入と・・・なんでーー???? (たぶん後で出てくるはず) |
||
12:37
|
14日目3
|
|
ひさびさ〜
高解像度。まあこれは特にわからんことはなくトントンと進んでます〜。 P279、ほっほ〜。ES:DIにビデオカードの情報があると。なるほどなるほど。 P282 キーボードかぁ。 ここの表でもいいんだけど、オイラの時は実際の配置との照らし合わせに ちょっと苦労した記憶があるのでこんなのを作っとります。 よろしかったらご活用ください〜。 P288 うーん。スルスルと解りすぎて書くことないなぁ・・・←なにを偉そうに! 動くだけで反応しないマウス・・・・ そんなの飾りです! かわい人にはそれが解らんのです! そんな小ネタとともに、14日目終了〜 |
||
(1)  |
PopnupBlog V3 Denali created by Bluemoon inc. |