Hyfaxのこと-誰が居る?

Hyfaxのこと

x86リアルモードでモニターを作ろうシリーズです。
Windows11+wsl2で構築しています。

バグ

まずはバグの話です。前回メモリのアロケーターを導入したのはいいのですが、いろんなバグに悩まされました。例えばこんなやつ。

二週目でハングする

一週目は正常に動作するのですが、2週目でハングしました。
あるいは無限ループに入るとか。

これは比較的楽な方で、2週目投入時のセグメントがずれていたので誤動作していました。修正して一応治ったと思います。

三週目でハングする

一週目、二週目は正常に動くのですが三週目でハングしました。

ゴミがたまって限界を超えるパターンですね。使っているバッファとかを念入りに初期化して退治しました。

nopを入れると動作が変わる

極めつけはこれ。nopという『なにもしない』命令を入れると動作が変わるというやつ。
もう意味わかんない。
制御系でタイミングをとるために……じゃなくて、サブルーチンとサブルーチンの間のなにも動作しないところにnopをいれたら動作が変わってしまうという。
アドレス配置が換わって問題になるのはわかるのですが『どこ』を直せばいいか、まったく手掛かりがないという最悪のバグ。

スタック不整合、スタックリーク、各変数のアドレス確認など色々やってなんとか落ち着きました。

でも、一番厄介なのは

バグがなくなったわけじゃない

ってことですね。バグがなくなったと言い切れないところが辛いところです。
そんなこんなで時間がかかったのでした。

誰が居る?

さて今回の開発するのはlsです。そもそもメモリアロケータを導入するきっかけになったネタです。ソースはこんな感じ。

実行結果はこうなります。

オプションとかは対応してません。

このソースはgithubで公開しています。よろしければどうぞ。
https://github.com/CbWB-Inc/software/tree/main/laboratory/lab02/hyfax-09-ls

《2026/01/31 16:37:23》

コメント

タイトルとURLをコピーしました