毎年好例、プレ五月病

386SXのラップトップPC(「ノート」じゃない)とか 486 の VL-Bus マザボとかいじり倒していたころの時間とか金とか根性とか今あったらなあ…とか思ってしまう斜陽期。いやあの頃だって十二分にヌルかったのですが、今はもっとこう、あらゆる意味でホープレスだし。

LPKKC 1.07 (2009-04-27)

というわけで更新して、とりあえず自分のページに上げておきました。ベクターに登録された分もそのうち更新されるでしょう。
1.04 までに存在していたかなり致命的なバグが 1.05 で修正されました(つまりこのバグ、12年近く放置されていたことになります…)。以前のバージョンをお使いだった方はなるべく最新版にアップデートしたほうがよいかと思われます。
調子こいてすこし拡張し、オプションを追加してみました(1.06→1.07)。オプション /S で内部スタックサイズを設定し、常駐サイズを削減することができます。必要以上にスタックサイズを削るとかなりヤバいので、サイズ設定には多少の調査(試行錯誤)が必要かもしれません。

というわけでちょっと調べてみることにします。まず LPKKC に以下のようなオプションを設定します

DEVICE=C:\DRIVER\LPKKC.SYS /S128 /V

/S128 でスタックサイズを 128 バイトに設定(デフォルトは 256)、/V はインストール時の内部状態を表示します。
うまくいくと、LPKKC 初期化時にはこんな感じのメッセージが表示されます。

"LPKKC Internal Stack" の部分が内部スタックの先頭アドレスとサイズです。適当なデバッガ(ここでは EXDEB を使いましたが、べつに DEBUG や SYMDEB でもかまいません)で該当するメモリを見てみます。

まだ DOS 起動直後で IME を一度も動かしていないので、スタックは初期値のままです。

すこし IME を動かして…

もういちど内部スタックをダンプ。

スタックは高位アドレス(画面下方)から低位(画面上方)に向かって進んでいくので、すくなくとも 66 バイト使用されていることがわかります(む、64 バイト超えてるぜ…やはり /S64 は危険か)。当然ながらスタック使用量は環境構成によって異なるので、各自の環境でご確認ください。

めも

こじんてきめも for 2.4 pre1

2.4pre1…まだぜんぜん作ってないですサーセン
とりあえず CHANGES だけちろっと見た。2.3.7 からの変更点を configure のオプション的見地から眺めてみるとこんな感じでしょうか。

  • --enable-vmx で VMX サポート有効。一部の仕様は(まだ)サポートしていない。
  • --enable-configurable-msr で MSR レジスタサポート有効。設定例は .bochsrc と msrs.def 参照。
  • --enable-movbe で Atom の MOVBE 命令サポート。
  • --enable-1g-pages でロングモードで 1G バイトのページサイズサポート。
  • --enable-long-phy-address で 32 ビット超の物理アドレス空間サポート。ただし、4G バイト以下の RAM を搭載した状態しかエミュレートできない。(たぶん 32 ビットホスト環境では無意味)
  • --enable-debugger-gui で内蔵 GUI デバッガ有効。
  • --disable-a20pin で A20 のハードウェアマスク機能無効化。すこしスピードアップするかも。
    …えーとこれはよーするに、メモリアドレス算出時の & 演算がひとつ減る。具体的に変わるのはソース中だと bochs.h 内のマクロだけ。
    #if BX_SUPPORT_A20
    # define A20ADDR(x) )((bx_phy_address)(x) & bx_pc_system.a20_mask)
    #else
    # define A20ADDR(x) ((bx_phy_address)(x))(
    #endif
    リアルモード(DOS とか)での動作が重要な場合、--disable-a20 を指定してはいけない。
  • --enable-guest2host-tlb オプション廃止(というか常に enable)。
  • --enable-icache オプション廃止(というか常に enable)。

2.4 で追加された分だけでもこんぐらい。configure --help するとほかにもいっぱいオプション指定が出てきますが、明示的に指定しないと有効にならないオプションが実はけっこうあったりするのでメンドくさい。