2009年9月6日日曜日

NASM version 2.07が原因でした

「作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践 ~ 金 凡峻」

サンプルコードがBochs 2.4.1で動かない、とお伝えしましたが、動きました。Bochsのバージョンの問題ではなかったようです。
boot.asmの中で実行してる

jmp $+2
nop
nop

をNASM version 2.07でコンパイルすると、とんでもないところへジャンプしていたようです。良く読むと、著者はversion 0.99.06を使うよう言ってます。version 2.07とはjmp命令の仕様が異なるようです。

ちなみに、NASM version 2.07では

jmp short flush
flush:
nop
nop

と書きかえることで動作するようになります。Bochs 2.4.1はコンフィグレーションがGUIで設定できBochs 2.3.7より便利です。

0 件のコメント: