ビーコンの創出

なんか作ったり報告したり。

30日でできる!OS自作入門でサクサクOS自作その1(0〜7日目)

30日でできる!OS自作入門(0〜7日目)

f:id:souring:20190320155854j:plain
7日目.完成の頃には蛇腹みたいになるかな

川合秀実さんの著書『30日でできる!OS自作入門』を今さらですが始めてみました。

今さらと言うのは、セキュリティ・キャンプの参加が決定した頃に「この本の著者いるよ!サイン貰えるよ!」と友達に勧められて記念に購入したのがこの本との出会いでした。

そうしたら本当にサインを貰えて、記念写真まで撮ってくださいました!

あれからもうすぐ2年になります。 自分の良くない癖でですね、本を買っただけで満足してしまうところが多々あります。

そのまま本棚に眠らせていては駄目でしょ!ということで、春休みを機に今さらですが始めることにしました。

現状

7日目まで作り終えた今、現状はこのようになっています。

f:id:souring:20190320154649g:plain
OS自作の様子(スクリーンショットのアニメーション)

環境はMacでやっています。 本書はWindows向けなのですが、偉大なる先人達がMacLinuxでも開発できるように環境を整えてくださっています。

僕はhikaliumさんのz_tools_osxを使わせてもらっています。ありがたい。Makefileを毎回書き直すだけで済んでいます。

参考: Mac OSX におけるはりぼてOSの開発環境を(再)整備した話

できたこと

0〜7日目の出来事を振り返るとこんな感じです

  • バイナリエディタで地道にイメージディスクを作成
  • アセンブリ言語でイメージディスクを作成
  • C言語でイメージディスクを作成
  • 白い画面表示
  • 四角形を描画
  • マウスカーソルを描画(動かない)←!?!?
  • 割り込みハンドラ作成
  • キーコードの取得

困ったりしたこと

  • フロッピーディスクとそれが使えるPCが無いので「フロッピーディスクからのhelloOSの起動」ができなかった
    • SDカードでできたりしないかなあ...
  • 公式のサポートページでMacのサポートはこちら!のページのリンクが切れてるため、路頭に迷った
    • naskではなくNASMでアセンブルしていたけれど、hikaliumさんのサイトに救われる
  • なんでこのMakefileだめなんだ!?!?\¥ならいけるぞ何故だ!?ってなった原因はShift-JIS
    • 本書のコード、Shift-JISで書かれています

得たこと

感想

勉強になる

この本すごく勉強になります。 なぜかというと、大学の情報工学科で学べなかった内容ばかりだからです。

例えば、ソースファイル分割やMakefileの作成はしたことがありませんでした。 すでに分割後のソースコードに書き加えたり、Makefileが用意されていたりすることはあったのですが、 自分で作り出すことは無かったのです。

コードが複雑になったら分割、Makefileで同じものを何度も書くのが面倒になったら一般規則を使うなど、 おお、こうやって作っていくものなのか!と手に取るようにわかります。

復習にもなる

また、大学で学んだけれど頭に入っていなかったことの復習になりました。

アセンブリ言語の授業を受けていた頃はレジスタなどというものの気持ちなどわからず、 どうしてAXで番地指定できないんだよ!とキレてました。

本書では、番地の指定に使えるレジスタは限られている(BX,BP,SI,DI)ことや、C言語と連携する場合はEAX, ECX, EDXのみ自由に使ってよくて他は大事な値があって変更しちゃいけない などの説明を、作りながら問題に直面した時に教えてくれるのですごく納得がいきます。

楽しい

そして何より、楽しく学べると思います。

作ってる最中に色々と改造したくなります。 こういうの作ろうかなというアイデアが浮かんできます。

初期のMacintosh OSを再現したいなーと思ったり。 CPUを自作したくなるという衝動に駆られました。

早く完成させたい!

次回予告

マウスがついに動き出す......