Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

自作OS| (2日目) アセンブラ学習とMakefile入門

a# OSをつくる

ずっと前からOSを作りたくて作りたくて やっと参考書を購入して手を動かし始めました

参考書はモチロン

30日でできる!OS自作入門

30日でできる! OS自作入門

30日でできる! OS自作入門

OS屋になるための一路 - Hope is a Dream. Dream is a Hope.

(2日目) アセンブラ学習とMakefile入門

概要

アセンブラからブートイメージを作るまでをMakefileで管理する.

詳細

これまでは、アセンブラから機械語へ翻訳し、フロッピーのイメージ作成を、参考書の著者作成の「nask.exe」で実行していた.

しかし、実際のブートセクタは512バイトだけ。あとはずっと0x00で埋まっているだけだった。

そこで、ブートセクタだけのソースコードを書き、「edimg.exe」を使って、その他の部分は自動で作ってもらう。

上記の作業をコマンドラインからいろいろやるのは大変なのでMakefileを作る.

Makefileの使い方で、ファイルの生成に関して勉強になったので以下に書いておく。

make.bat

..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

Makefile

# デフォルト動作

default :
    ../z_tools/make.exe img

# ファイル生成規則

ipl.bin : ipl.nas Makefile
    ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst

helloos.img : ipl.bin Makefile
    ../z_tools/edimg.exe   imgin:../z_tools/fdimg0at.tek \
        wbinimg src:ipl.bin len:512 from:0 to:0   imgout:helloos.img

# コマンド

asm :
    ../z_tools/make.exe -r ipl.bin

img :
    ../z_tools/make.exe -r helloos.img

run :
    ../z_tools/make.exe img
    copy helloos.img ..\z_tools\qemu\fdimage0.bin
    ../z_tools/make.exe -C ../z_tools/qemu

install :
    ../z_tools/make.exe img
    ../z_tools/imgtol.com w a: helloos.img

clean :
    -del ipl.bin
    -del ipl.lst

src_only :
    ../z_tools/make.exe clean
    -del helloos.img

自作OS | (1日目) PCの仕組みからアセンブラまで 後半

OSをつくる

ずっと前からOSを作りたくて作りたくて やっと参考書を購入して手を動かし始めました

参考書はモチロン

30日でできる!OS自作入門

30日でできる! OS自作入門

30日でできる! OS自作入門

自作OS | (1日目) PCの仕組みからアセンブラまで 後半

概要

アセンブラを写経して、Hello Worldを表示する

詳細

前回 は、バイナリエディタを使って、直接バイト列を書いた.

フロッピーディスクに書き込むことを考えているので1,474,560Byte(1440 x 1024 バイト)。 1Byteが0xFFのような8bitデータなので。 数字が2949120文字ならぶ。。

フロッピーディスク = 1440 x 1024 バイト = 1,474,560 = 1440KiB

しかもほとんどが0という.

f:id:hope_is_dream:20190106073605p:plain

そうすると、あるていど決まった文字列は省略して書きたくなります。 また、文字(例えば、"HELLO WORLD")が入る場所等は、バイト列よりも文字で書いたほうが分かりやすい。 ということで、利用するのがアセンブラです。 参考書では著者作成の「tools/nask - hrb-wiki」というソフトウェアを使います

f:id:hope_is_dream:20190106073847p:plain

そうすると、 DB, DW, RESBという命令を使って入力することができる!?

DB : バイト列を入力
DW : 2バイト列を入力
RESB : 0x00で埋める

あら、すごい便利

f:id:hope_is_dream:20190106073909p:plain

これでアセンブラがかけた?

まとめ

アセンブラを写経して、Hello Worldを表示できた

無事1日目が終わった。

書籍を読むだけでは、分かっているんだけど腹落ちしてなかったが、 全く同じ内容を写経しただけで腹落ちした。写経すごい。

アセンブラだったが、恐れがなくなった。

以上

OS屋になるための一路

OSをつくる

ずっと前からOSを作りたくて作りたくて やっと参考書を購入して手を動かし始めました

参考書はモチロン

30日でできる!OS自作入門

30日でできる! OS自作入門

30日でできる! OS自作入門

(1日目) PCの仕組みからアセンブラまで

概要

バイナリを写経して、VirtualBOXにてHello Worldを表示できた!!!

詳細

バイナリエディタの準備

freesoft100で「バイナリエディタ」と調べてみると結構でてきた。

ひとまず全部ダウンロード

f:id:hope_is_dream:20190104090952p:plain

書籍に準じてBzEditorを使う。

f:id:hope_is_dream:20190104091555p:plain

参考書に従い、バイナリを書き込んでいく。 ほとんど0ではある。 先頭部分の数値を無心で写経していく。 意味は分からない。。しかし、右側の部分にHELLO的な文字列解釈されている部分もある。FAT32もある。

そんななか5分後。

適当な名前.imgで保存し、VirtualBoxでフロッピーとしてマウント.

f:id:hope_is_dream:20190104090847p:plain

できた?????

もしや、はじめてのバイナリ!!!

思った以上に感動!!!

これはうれしい!!!!!!

本にもあるが、ただのコピペだが手打ちしたほうが良いとあった。 手打ちしたかいがありました。

これはOSらしい。 (これをOSと認めてもらえれば)

これはやらないとわからない。

感動!

ことしもがんばるぞー