でばぐ


マリオブラザーズが2画面つながってます。
これは何をやってるかといいますと、左右で動作を比較しているのです。

左が最適化してバグを入れてしまったCPUコアで動いている画面、右が最初に作ったリファレンス実装のCPUコアで動いている画面です。

左側の画面では、マリオとかノコノコが地面を突き抜けて落っこちていきます。
下を突き抜けて、足だけ上から見えてますねw

1クロックCPUコアを動かすたびに、右と左のCPUコアの間で、各レジスタの値を比較するようにしました。値に違いがあったら、メッセージボックスを出して、最後に実行した命令と、各レジスタの値を表示するようにしてます。これでバグがある部分がすぐに判るようになりました。

ちょっと面白いデバッグ方法かなと思います。
でもまあ、最初からバグを入れるなっていう話なんですが。