22日目「C言語でアプリを作れるぞ! ウィンドウを表示できるぞ!!」

 まずは、スタック例外の割り込みの話だ。
 はぁ? 例外って一個じゃないの? という感じなのだが、実は例外ってのは結構いろいろとあるらしいのだ。本書P451の欄外コメントを読むと、

CPUのマニュアルによると、0x00番から0x1f番までは、
例外用の番号ということになっている。それにあわせて、
IRQの割り込み番号設定では0x20番号以降にしたわけだ。

と書かれてある。つまり、例外用の番号は全部で32個も存在すんのかよ? という驚愕の事実。これはかなり驚きだ。それで、スタック例外の番号は0x0cなのだ。だから、割り込み設定で、0x0cを設定してやれば、これでスタック例外時の処理を行うことができる。
 そして今日の本題であるC言語でアプリを作成に入るのだが、今日はウィンドウを表示するAPIを作った。そして、それをC言語アプリから利用するのだ。さて、数日前からアプリを実行するようになったはりぼてOSだが、アプリケーションを実行させるには予想以上に大変であることが最近分かった。例えば一言でアプリを実行させるといっても、アプリが実行するコードを入れておく場所と、アプリが利用するデータを入れておく場所などをメモリ上で適切に分ける必要があるし、悪用目的でアプリを実行しようとする輩もいるだろうからだ。本当に細かい部分、普通にPCを使っている人には見えない部分にすごい気を使うのだ。
 俺はWindowsLinuxといった、あんなすごいOSを作る気なんてさらさらない(というか、そもそも作る技術がない)が、でも、この本を読んでいて思うのは、「ははー、OSの内部ってこうなってるんやなぁー」ということだ。このご時世、ただの一般市民な俺がOSを作るなんて、ぞくに言う「車輪の再開発」なわけで、ぶっちゃけ無意味なんだが(仕事じゃないし、1円の価値にもなんないし(笑))、でも、OS内部の仕組みを知ることがこれほど楽しいことだとは思わなかった。車輪の再開発だって? 大いに結構! 例えどんなにオンボロで、どんなに遅い自動車だったとしても、それが、自分ひとりで作った自動車だったなら、俺は乗ってみたい!!
 明日もいろいろなAPIを追加していくようだ。乞うご期待!