OSって奥深いねぇ


昨日から、やっと自作OSの開発に本格的に取り組み始めました!
と言っても、教科書の順を追ってコーディングしてくだけなんですけどねw

川合秀実さんの「OS自作入門」、これ結構分かりやすいですよねぇ~
川合さんは、セキュリティー&プログラミングキャンプ2010のOS自作組で講師をしていらしたようです。
こんなことなら、ネットワークセキュリティ組よか(ry
なんでもありません。元々自分はネットワークの畑でやってこうとしてた者ですから、全くもって問題ないです。
ていうか、もし違う組だったら今知り合ってる人たちとは知り合えなかったのかなぁ・・・?

ま、いいや

今日はそこまで進んではいません。

まあ、まずは皆さんおなじみの「Hello,World」ですよね。
ちょっと小さくて見にくいかもしれません。
まあ、そこらへんは勘弁してください。
これはブートローダだけのとても軽いプログラムです。
因みにアセンブリで書かれています。
次はディスクの読み込みですね。OSたるもの、ちゃんとシステムを読まなきゃブートローダもなにも無いですもんねw
画面には何も表示されませんが、奥でごにょごにょやってるBIOS君やブートローダ君、いつもありがとうございます!

で、次は早速OS本体の製作です。
方針としてはどうやら、はじめのCPU君とメモリ君とのやり取りはアセンブリで行い、その後のOSの機能はC言語で記述していくようです。
でも、OSの中でも直接I/Oやメモリ等々と渡り歩かなきゃいけない時があり 、そのときはまたアセンブリに頼るようです~

早速作ったのは・・・
なんだかしましまですね。
これはVRAMに色の値を書き込んでやっただけなんですが、、、
よくよくみるとこのVRAM結構すごい。
VRAMは全部で64KBあるらしいですが、そのメモリひとつひとつが全ての画素ひとつひとつに割り当てられてるんですってね!
当たり前っちゃ当たり前なんですけど、物を知らない俺にとってはちょっと感動物でした。

続いては四角、四角、刺客もとい四角。
これは単純にx座標方向に連続して同じ値を代入し、それをy座標方向にも同じだけ繰り返す、という作業で正方形ができます。

まあ、そこで本日の〆はこんな感じ。
なんだかWindows95とかってこんな感じでしたっけ?
いきなりやってることが飛んだように見えますがやってることは至って単純。
一旦バックを緑で埋めて、その後下に灰色のタスクバーを生成。後はメニューボタンとかが入りそうなところに影つけてボタンに見せるだけ。
ようは、これボタンじゃないんですよねww

しばらくはこんな感じで本の受け売りが続くかもしれませんが、暖かく見守っていてください。
では~

結構時間かかるのよな


 私の生活スタイルって結構特殊なんですよねぇ

 ついこの前までは夜は1時半頃に寝て、朝は5時に起きるという極めて不健康な感じだった訳ですけども、最近になってようやく変えることができました。
それは、夜は10時に寝て朝は2時に起きるというものです。
そんな朝早くおきてどうするの、と聞かれれば、それは勿論コーディングですw

 でも時々目覚まし時計で起きれなく、気がついたら5時で「その日はコーディング無し!」になることもあるんですよ(泣)
ま、それが昨日なんですけどねww

 んで、今日も引き続きアセンブリ言語っすよ。
ところで、なんで今頃アセンブリ言語なんてやってるのかというと、一言で言えば「自作OS」!!
夢なんです。それも高校のうちでっていう
そんなわけで今も頑張っているわけですが、よくよく考えると今やってるやつってDOS上のシステムコール使ってるわけで、自作OSに関係ないじゃん?

・・・・・・
・・・

え、
まあ、細かいことは気にせずに、練習っていうことですね。

 本日の学習範囲は演算です。
いやはや、やっぱり高水準言語とは違って面白いね
加算のADDや減算のSUB、これらはディスティネーションオペランドに元の値を入れてソースオペランドで加えたり引いたりする値を指定する。これは感覚で分かります。
でも、ここで面白いのが乗算のMULと除算のDIV。両者ともオペランドはひとつしかなく、ALレジスタやAXレジスタに入っている値を元の値とします。
 MULはオペランドに指定された値をAL、もしくはAXに入っている値と掛け合わせてAXに保存。
 DIVは指定された値でAXに入っている値を割り、商はAL、余りはAHに保存されます。

使い方を逡巡してしまいました。でもすぐ分かったけどね♪
これはシステムコール関係ないし、良かったねww

この本まだまだ終わりそうにないなぁ・・・
いつになったらOS自作始めれるんだろ??