「30日でできる!OS自作入門」を今更ながらやってみる - 1日目
やるぞやるぞOSやるぞ
- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
メモ書きなので読みにくいかも…
まずは環境構築
ArchLinuxで行いました。Linuxユーザーならば読み替え可能です。
hikalium氏のツールを用います。以下リンク
https://hikalium.com/pages/note/20161202.html
次のようにディレクトリを配置します。
haribote/ | |--z_tools/ | |--mihon_harib27f/ | |--01_day/ | |--02_day/ | |--...
詳細は上のリポジトリを見てほしいのですが、
z_tools
はz_tools_linux
をリネームしたものmihon_harib27f
は見本用の完成ディレクトリ
です。
1日目
1 - とにかくやるのだぁ
バイナリエディタでがんばります…が自分はカット。以前Windows環境で挑戦したときにがんばったのでね。ゆるして
2 - 結局何をやったのだろうか?
CPUはONとOFF、つまり0と1しか認識できません。なのでCPUに読み込ませるデータも0か1でなくてはいけません。バイナリエディタは2進数編集機と訳されるわけで、前の章では直接0と1を書いてたわけなんですね。
ちなみに
- 頭に
0x
は16進数 - 頭に
0b
は2進数
であることが多いです。
3 - アセンブラ初体験
バイナリでOSを書くのはいくらなんでも大変なので、アセンブリ言語でOSを書きましょう。Wikipediaによると、アセンブリ言語とは、
アセンブリ言語(アセンブリげんご、英: assembly language)とは、コンピュータ、マイクロコントローラ、その他のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言語である。なお、英語の assembly とは「組立」という意味である。
と解説がされています。
わかりやすく言うと機械語(バイナリ)と一対一対応する言語です。
さてNASKの命令が出てきたので解説です。といっても本に書いてあることをまとめただけですが…
DB
: ファイルの内容を1バイトだけ直接書く命令RESB
:RESB 10
で10バイト分0x00
で埋める命令
helloos.nas
のアセンブルの仕方ですが、 z_tools/
内に nask
というアセンブラがあるので、 01_day/
ディレクトリから
$ ../z_tools/nask helloos.nas helloos.img
でアセンブルできます。
4 - もうちょっと書き直してみる
新たな命令と文法です。
DW
: ファイルの内容を2バイトだけ直接書く命令DD
: ファイルの内容を4バイトだけ直接書く命令$
: 先頭から何バイトか示す変数
あとは本を読んでくれれば大丈夫だと思います。
今日はここまで
お疲れ様でした、明日もがんばりましょう。
2日目は こちら