2日目(Makefile見直し)
2日目の項目は一通り終わらせたけど、Ubuntu用に少しよけいなことも検証しておく。
他の方の環境を参照して、サポートページからリンクのあったLinux版開発セットを使わないようにMakefileをカスタム。
要するに、exeファイルではなくできるだけLinuxのコマンドで対応。そうするとファイルが少なくて済む。
Linuxでのアセンブラ環境はnasmとgasのどちらかが多いようだが、ここではnasmにする。
まず
$ nasm ipl.nas -o ipl.bin -l ipl.ls
としてみたが、56行目でエラー。
RESB 0x7dfe-$
しかし前回出なかったような??
どうやらnasmを使うと出てきてしまうらしい。他の方のブログを参照して、
RESB 0x7dfe-0x7c00-($-$$)
と、書き換え。
それとRESB を 使うと
warning: uninitialized space declared in .text section: zeroing
というエラーは出る。でもまあ無視しても大丈夫らしい。
でも気になるので、治すならTIMES命令にする。
24行目で
TIMES 18 DB 0
と、56行目
TIMES 0x7dfe-0x7c00-($-$$) DB 0
に変えると、ワーニングがなくなる。
さらにコマンドmformatでimgファイルを作成。
これでMakefileを編集できる。
参考までに先日作った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 :
qemu-system-i386 helloos.img
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
---
こっちがLinux用。自分がわかる範囲のみでまとめたら他の方のものとほぼ同じになってしまった。
---
# ファイル生成規則
ipl.bin : ipl.nas Makefile
nasm ipl.nas -o ipl.bin -l ipl.lst
helloos.img : ipl.bin Makefile
mformat -f 1440 -B ipl.bin -C -i helloos.img ::
# コマンド
asm :
make -r ipl.bin
img :
make -r helloos.img
run :
qemu-system-i386 -fda helloos.img
---
どちらを使うかは、もう数日進めてみてからにする。
それまでは両方のファイルで行ったり来たりしたい。
この辺りは本体の内容ももちろんだけど、今後のために環境を整えることも大切だと気付いた。
しかしこのままだと中身を理解せず動いたらOK、といういつものパターンになりそうなので、3日目からはもっと本体のプログラムを重視していく予定。
参考にさせて頂いたサイト:
https://motojiroxx.hatenablog.com/entry/2018/05/10/030811
http://cyberbird.indiesj.com/x86%E3%80%80os%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80/os%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%20onlinux%202%E6%97%A5%E7%9B%AE#ps_text
https://qiita.com/pollenjp/items/d15fce401bccd37e8059
https://wisteria0410ss.hatenablog.com/entry/2019/02/06/122929