緊急事態宣言解除から二日目!! & 祝 71kg台!!
71.5kg
ここ二日は、お米を一切食べなかった事及びお菓子も無し!
お酒は糖質オフをいつものように飲んでいたが、
結果、朝測ってみたら、久々の71kg台。
ふむ。続けてみたいと思う。。(できるかな。。)
さて。。。。
しかし、現状を打破する策が思い当たらない。。。(涙)
こういう時に、技術力っていうか、発想力というか、デバッグ力というか
が発揮されるんだろうな。。
一先ず、ゆっくり考えてみる。
1. ブートはできているっぽい。
2. asmhead.nasへきちんと飛んでいないように見える。
3. 確認方法は、これまで画面が黒くなっているのを確認しただけ。
さて、じゃ、やっぱりasmhead.nas辺りがおかしいのかなって思うよな。。。
そもそも、asmhead.nasにある最初の命令が実行されていないっぽいし。。。
ipl10.nasとの違いは、Makefile内で -f elf32ってのをつけているかどうか?って事で、asmhead.nas側から外して実行すると。。
(これも、Makefile内でやっている事がめちゃくちゃなのかも。。
分かってる人からすると、アホすぎる事してるんだろうな。。。 多分。。
理解しないでやってるって、悲しい。。。。 Orz...)
$ make run
make -r img
make -r haribote.img
nasm ipl10.nas -o ipl10.bin -l ipl10.lst
nasm asmhead.nas -o asmhead.bin -l asmhead.lst
nasm -f elf32 naskfunc.nas -o naskfunc.o -l naskfunc.lst
x86_64-elf-gcc -c -g -march=i486 -m32 -nostdlib bootpack.c -o bootpack.o
x86_64-elf-ld -m elf_i386 -e HariMain -o bootpack.hrb -T hrb.ld bootpack.o naskfunc.o
cat asmhead.bin bootpack.hrb > haribote.sys
mformat -f 1440 -C -B ipl10.bin -i haribote.img ::
mcopy -i haribote.img haribote.sys ::
# -SはデバッガのコマンドまでCPUを起動させないオプション。-sは-gdb tcp::1234.の意味らしい。
# ただし、-s部分は直接書くとエラーで止まってしまう。。。
# -monitor stdioってのは、QEMUのデバッグ用モニタって事らしい。
qemu-system-i386 -L . -m 32 -monitor stdio -s -drive file=haribote.img,format=raw,if=floppy -boot a
QEMU 5.0.0 monitor - type 'help' for more information
(qemu)
むふ。これで、まずはブードでストップ!!
元に戻して、再度実行(asmheadの部分に、 -f elf32オプションをつけて実行)
$ make run
make -r img
make -r haribote.img
nasm ipl10.nas -o ipl10.bin -l ipl10.lst
nasm -f elf32 asmhead.nas -o asmhead.bin -l asmhead.lst
nasm -f elf32 naskfunc.nas -o naskfunc.o -l naskfunc.lst
x86_64-elf-gcc -c -g -march=i486 -m32 -nostdlib bootpack.c -o bootpack.o
x86_64-elf-ld -m elf_i386 -e HariMain -o bootpack.hrb -T hrb.ld bootpack.o naskfunc.o
cat asmhead.bin bootpack.hrb > haribote.sys
mformat -f 1440 -C -B ipl10.bin -i haribote.img ::
mcopy -i haribote.img haribote.sys ::
# -SはデバッガのコマンドまでCPUを起動させないオプション。-sは-gdb tcp::1234.の意味らしい。
# ただし、-s部分は直接書くとエラーで止まってしまう。。。
# -monitor stdioってのは、QEMUのデバッグ用モニタって事らしい。
qemu-system-i386 -L . -m 32 -monitor stdio -s -drive file=haribote.img,format=raw,if=floppy -boot a
QEMU 5.0.0 monitor - type 'help' for more information
(qemu)
ふむ。
画面が変わった。。(asmhead.nasが実行された?と思いたい。。)
でも。。。
(qemu) xp/100xh 0x0ff0
0000000000000ff0: 0x0b0a 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0000000000001000: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0000000000001010: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0000000000001020: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0000000000001030: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
0000000000001040: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
最初のコードは実行されていないように見える。。。。
う〜ん。。。
なんか、意図しているアドレスと違う所に書くようになってるのかな。。。
(qemu) xp/400xh 0xc200
000000000000c200: 0x457f 0x464c 0x0101 0x0001 0x0000 0x0000 0x0000 0x0000
000000000000c210: 0x0001 0x0003 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c220: 0x0040 0x0000 0x0000 0x0000 0x0034 0x0000 0x0000 0x0028
000000000000c230: 0x0006 0x0002 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c240: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c250: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c260: 0x0000 0x0000 0x0000 0x0000 0x0001 0x0000 0x0001 0x0000
000000000000c270: 0x0006 0x0000 0x0000 0x0000 0x0130 0x0000 0x0140 0x0000
000000000000c280: 0x0000 0x0000 0x0000 0x0000 0x0010 0x0000 0x0000 0x0000
000000000000c290: 0x0007 0x0000 0x0003 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c2a0: 0x0270 0x0000 0x002b 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c2b0: 0x0001 0x0000 0x0000 0x0000 0x0011 0x0000 0x0002 0x0000
000000000000c2c0: 0x0000 0x0000 0x0000 0x0000 0x02a0 0x0000 0x0130 0x0000
000000000000c2d0: 0x0004 0x0000 0x0013 0x0000 0x0004 0x0000 0x0010 0x0000
000000000000c2e0: 0x0019 0x0000 0x0003 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c2f0: 0x03d0 0x0000 0x007d 0x0000 0x0000 0x0000 0x0000 0x0000
000000000000c300: 0x0001 0x0000 0x0000 0x0000 0x0021 0x0000 0x0009 0x0000
000000000000c310: 0x0000 0x0000 0x0000 0x0000 0x0450 0x0000 0x0018 0x0000
000000000000c320: 0x0003 0x0000 0x0001 0x0000 0x0004 0x0000 0x0008 0x0000
000000000000c330: 0x05c7 0x0ff2 0x0000 0x000c 0x000b 0x13b0 0x00b4 0x10cd
000000000000c340: 0x05c6 0x0ff2 0x0000 0x6608 0x05c7 0x0ff4 0x0000 0x0140
000000000000c350: 0xc766 0xf605 0x000f 0xc800 0xc700 0xf805 0x000f 0x0000
これって、多分、あっているような気もするが。。
何がおかしいんだろう。。。。(Orz...)
やっぱり、きちんとハードウェアやコンパイラとかも理解しないと進まないのかな。。。。
悩みは続く。。。