緊急事態宣言解除から二日目!! & 祝 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)

 

f:id:kanazo3:20200526090137j:plain


 むふ。これで、まずはブードでストップ!!

元に戻して、再度実行(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)

 

f:id:kanazo3:20200526090321j:plain

 

ふむ。

画面が変わった。。(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...)

 

やっぱり、きちんとハードウェアやコンパイラとかも理解しないと進まないのかな。。。。

 

悩みは続く。。。