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

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

ふむふむ。
ようするに、タスク切り替え専用のタイマを作って、こいつが
勝手に自動的に切り替えを繰り返すと。

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

そんなわけで、やっとこさ15日目終了〜
 
30日を過ぎたBlogにはコメントできません。
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@ゲスト -- 08/25 11:04
0x0202を2進数にすると、bit1とbit9だけが1になります。だからbit15が1なんじゃなくて、IFが1ですよ。

30日を過ぎたBlogにはコメントできません。
2007年7月15日(日曜日)
17:43
15日目2
 
ふむふむ。
まずはTSS構造体を定義する。
そしてその定義に従って二つの構造体変数を宣言。
んで、レジスタ退避意外の要素、TSSの設定変数に初期値を代入と。

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

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

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

本来のセグメントはこれを自由に好きなように設定できるけど、
TSSはP292のとおり104バイトしかいらないから、その大きさつーことね。

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

で、タスクの切り替え。

・TRレジスタに現在のタスク番号?(実際にはTSS番号)*8を代入
・あとは切り替えたいタスク番号にファージャンプ!

なるほどなるほど!

P296、
うーん。これは、パチンとタスクがタスク4に切り替わったとき、
全てのレジスタがこうなるということを設定するわけか。
今回は初めて切り替わるので、事実上初めて動き出すのと同じこと。
なので、ほとんどのレジスタは0なわけか。
(まあつまり初期値なので0にしとくかってレベルのはず。
 
30日を過ぎたBlogにはコメントできません。
12:52
15日目
 
15日目〜。
さーていよいよマルチタスクだ!

マルチタスクは同時進行ではない。高速に切り替えているだけ。
忍者の分身の術と同じなわけですね。

ちなみに猿飛び佐助は実在しませんが霧隠れ才蔵は
実在したorモデルとなる忍者がいたとか・・・ ←超どうでもいい

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

ldtrは0に。iomapは0x40000000をとりあえず代入と・・・なんでーー????
(たぶん後で出てくるはず)




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

30日を過ぎたBlogにはコメントできません。
12:37
14日目3
 
ひさびさ〜

高解像度。まあこれは特にわからんことはなくトントンと進んでます〜。
P279、ほっほ〜。ES:DIにビデオカードの情報があると。なるほどなるほど。


P282
キーボードかぁ。
ここの表でもいいんだけど、オイラの時は実際の配置との照らし合わせに
ちょっと苦労した記憶があるのでこんなのを作っとります。
よろしかったらご活用ください〜。


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

動くだけで反応しないマウス・・・・
そんなの飾りです! かわい人にはそれが解らんのです!


そんな小ネタとともに、14日目終了〜
 
30日を過ぎたBlogにはコメントできません。
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.