1日目「何かわけの分からんことをたくさんやらされました」

 おいおいおいおい、この著者ちょっとやばいぞ。1日目、いきなりバイナリエディタ1.4MBものデータを手書きで書かせ始めたぞ。ちょっと待て待て、そんなん誰が書くねん。しかも書いてるバイナリもわけ分からんし。ホントにメンドイ。と思ったらちゃんと付属CD-ROMに出来上がったあとのファイルが入ってるじゃねーか。著者はよくわかってる。
 それでtolsetとかその他もろもろをCD-ROMからコピーしてqemu実行! そしたらいきなり、仮想マシンが立ち上がって「hello, world」が表示される。ああー、表示されたよー。って全然面白くねー。何この虚無感。だいたいバイナリエディタマシン語の意味すらよく分からんのに、こんなん出来てもなにも面白くない。そうだ、要するに意味が必要なんだ。さっきのバイナリエディタに書いたコードの意味を説明してくれ! ということで次のページを開くと、なんか2進数とは何か? とか16進数とは何か? とかの説明が書かれてあるんです。そこから説明すんのかよ!!
 ああー、そうかそうか、そういえば俺はこの本ではエリートだったんだ。書かれてある内容なんて分かって当たり前じゃないか、はっはっはっ(ぉぃ。というわけで2進数とか16進数とか8進数の話はすっと飛ばしてと、次のページを見てみると、なんかOSをnaskとかいうアセンブラで書くとか言い出してるんです。えっ? 何そのアセンブラ? 聞いたことないんだけど、と思ったら著者の自作アセンブラだった(汗)。あんたOSだけじゃなくアセンブラまで自作すんのかよ
 まぁいいですよ。自作アセンブラだろうが何だろうが、とりあえずこっちとしては30日後にOSが出来てればいいんですから。というわけで、そろそろプログラムが書きたくなったなぁ。さてさて、最初のプログラムを見てみると…、なんかソースコード18万行とか言ってるんですけど。えっと確かドラゴンボールの主人公がナメック星に来たときの戦闘力がちょうど18万だったような気がするなぁー。ただまぁこれは説明のためと言いますか、なんかそんな雰囲気を感じとったので、流し読みして、で、1日目のポイントは次のページのDB命令とRESB命令にあるようだ。
 DBは「data byte」の略でデータを1バイト書く、RESB命令は「reserve byte」の略でデータを任意のバイト数だけ確保してNULL(0x00)で埋めるみたい。1日目の重要ポイントはココ。他にも少しアセンブラ命令が出てくるので、以下にまとめて紹介。

  • DB(data byte)データを1バイト書く
  • DW(data word)データを2バイト書く
  • DD(data double-word)データを4バイト書く
  • RESB(reserve byte)任意のバイト数だけ確保してNULL(0x00)で埋める

 1日目はこれを覚えるのみ。あとは「$」記号が先頭から$までの位置をバイト数で表すということが結構ややこしいが、重要かもしれない。というのも先頭から510バイト目には「0x55, 0xaa」がなければならないみたい。だからそれのために「$」記号を使ってうまくサイズを合わせているというわけだ。
 さて、それでソースコードをいろいろといじりたいわけだけど、「hello, world」なんて王道まっしぐらな文字列じゃつまらないので、それを「I make the hariboteOS after 30 days.」と変更してみた。そして「コンパイル→実行」。よっしゃー、うまく動いたぜ。動作状況とソースコードは「http://www.geocities.jp/hariboteos/」に置いておく。今後、そういうもんはすべてこっちに置いておくからよろしく。
 さてさて、これで1日目は無事終了。helloos.nasを書いたのはいいが、ほとんど意味が分かってないのが問題だろう。でもまぁこれは2日目以降に解説してくれるだろうということで、今日は終わりだ。
 2日目以降もこの調子で行けるのか。乞うご期待!