はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
7月 30 (月曜日) 2007
19:14
15日目4
 
15日目4〜。



P307。

いよいよちゃんとしたマルチタスク。



ふむふむ。

ようするに、タスク切り替え専用のタイマを作って、こいつが

勝手に自動的に切り替えを繰り返すと。



これはむずかしくなかったぞ〜。



そんなわけで、やっとこさ15日目終了〜
 
name: @Guest  Comment:
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の表&二進数に変換すると・・・



┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐

│15│14│13│12│11│10│9 │8 │7 │6 │ 5│4 │3 │2 │ 1│ 0│

├─┼─┼─┴─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│ │NT│IOPL │OF│DF│IF│TF│SF│ZF│ │AF│ │PF│ │CF│

├─┼─┼─┬─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│1 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │1 │0 │

└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘



こういう値が入るわけね。(・・・なんだろ?この値??なんか意味があるのだろうか???)



・tss_b.esp

 タスクBが使うスタックの番地(開始番地?)のアドレスをセットすると。

 (まあこれは当然だよね)



・es,cs,ss,ds,fs,gs

 ふーむ・・・。asmhead.nasと同じ?えとえと???

 うえーーん!わかんねぇ!P134のDS、ES、SSの思い込みのこと??

 ここはちょっと棚上げ・・・

 



P299

えーっと・・・ESP+4かぁ。

これはどういう意味かというと、P69参照。Cから渡された引数を

読みたい場合にこうするというだけ。





P301

「川合先生!秀吉君がまたかよって言ってます!」 (笑

 
●K@Guest -- 08/25 11:04
0x0202を2進数にすると、bit1とbit9だけが1になります。だからbit15が1なんじゃなくて、IFが1ですよ。

name: @Guest  Comment:
7月 15 (日曜日) 2007
17:43
15日目2
 
ふむふむ。

まずはTSS構造体を定義する。

そしてその定義に従って二つの構造体変数を宣言。

んで、レジスタ退避意外の要素、TSSの設定変数に初期値を代入と。



で、これを実際のGDTに登録〜!



・・・あれ? リミットってなんだっけ??



あー! そっかそっか! 「このセグメントの大きさはいくつ」だ!



本来のセグメントはこれを自由に好きなように設定できるけど、

TSSはP292のとおり104バイトしかいらないから、その大きさつーことね。



ふむふむ。以上で準備がOKとなったわけね。



で、タスクの切り替え。



・TRレジスタに現在のタスク番号?(実際にはTSS番号)*8を代入

・あとは切り替えたいタスク番号にファージャンプ!



なるほどなるほど!



P296、

うーん。これは、パチンとタスクがタスク4に切り替わったとき、

全てのレジスタがこうなるということを設定するわけか。

今回は初めて切り替わるので、事実上初めて動き出すのと同じこと。

なので、ほとんどのレジスタは0なわけか。

(まあつまり初期値なので0にしとくかってレベルのはず。

 
name: @Guest  Comment:
12:52
15日目
 
15日目〜。

さーていよいよマルチタスクだ!



マルチタスクは同時進行ではない。高速に切り替えているだけ。

忍者の分身の術と同じなわけですね。



ちなみに猿飛び佐助は実在しませんが霧隠れ才蔵は

実在したorモデルとなる忍者がいたとか・・・ ←超どうでもいい



ふむふむ。TSSはセグメントの一種と。



ldtrは0に。iomapは0x40000000をとりあえず代入と・・・なんでーー????

(たぶん後で出てくるはず)









 
●uchan@Guest -- 07/16 08:05
僕もiomapはよく分からなかったですが、調べてみました。URL:http://haribote.org/index.php?uchan

name: @Guest  Comment:
12:37
14日目3
 
ひさびさ〜



高解像度。まあこれは特にわからんことはなくトントンと進んでます〜。

P279、ほっほ〜。ES:DIにビデオカードの情報があると。なるほどなるほど。





P282

キーボードかぁ。

ここの表でもいいんだけど、オイラの時は実際の配置との照らし合わせに

ちょっと苦労した記憶があるのでこんなのを作っとります。

よろしかったらご活用ください〜。





P288

うーん。スルスルと解りすぎて書くことないなぁ・・・←なにを偉そうに!



動くだけで反応しないマウス・・・・

そんなの飾りです! かわい人にはそれが解らんのです!





そんな小ネタとともに、14日目終了〜

 
name: @Guest  Comment:
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.