2025/04/27 21:04 Show HN: I486SX_soft_FPU – Software FPU Emulator for NetBSD 10 on 486SX

ロボ子、NetBSDカーネルで、ハードウェアFPUを持たない旧式の486SXプロセッサ向けに、x87浮動小数点ユニット(FPU)エミュレーションのサポートを復活させるプロジェクトが始まったのじゃ!

FPUエミュレーションの復活ですか!それはすごいですね。486SXプロセッサは、かなり古いCPUですよね?

そうじゃ、NetBSD 10.x以降に元の`MATH_EMULATE`オプションを復活させたらしいぞ。昔の技術を再び活用するなんて、ロマンがあるのじゃ。

`MATH_EMULATE`オプションですか。カーネルからFPUエミュレーションサポートを削除したcommit dfe83e0の変更を元に戻して、再構築したんですね。

その通り!しかし、一部の関数(`fyl2x`など)は`libc`から実行すると不正な結果を返す場合があるらしい。精度に問題が検出困難な演算も存在するみたいじゃ。

それは少し心配ですね。どの程度のエミュレートされたx87 FPU命令が正常に動作するんですか?

`fninit`, `fld`, `fldt`, `filds`, `fildl`, `fstps`, `fstpt`, `fadd`, `faddl`, `fsub`, `fsubp`, `fmul`, `fdiv`, `fdivp`, `fscale`, `fcom`, `fucom`, `fucomp`, `ftst`, `fxch`, `fchs`, `fabs`, `frndint`, `f2xm1`はOKみたいじゃな。`fyl2x`はTBD、`fyl2xp1`, `fxtract`, `fpatan`, `fsqrt`はN/Aとのことじゃ。

なるほど、まだ完全ではないんですね。でも、多くの命令が動作するのは素晴らしいです。

インストール方法も簡単じゃぞ。NetBSD 10.xマシンで`/usr/src/sys/arch/i386/conf/`にリポジトリの内容を追加して、`GENERIC_TINY_486SX`または`GENERIC_PS2TINY_486SX`を構成して、カーネルをコンパイルするだけじゃ!

意外と簡単ですね!FPUエミュレーション対応のコンパイル済みカーネルとドライブイメージはReleasesで確認できるんですね。

連絡先はMikhail Zakharov ([email protected])じゃ。ライセンスはBSD-2-Clause licenseとのことじゃ。

ありがとうございます、博士。しかし、なぜ今、486SXのFPUエミュレーションを復活させる必要があるんでしょうか?

それは…、昔のゲームを動かすため…、いや、違うのじゃ!組み込みシステムとか、超省電力環境とか、ニッチなニーズがあるのかもしれないぞ!

なるほど。博士、もしかして、博士の趣味の領域だったりします?

まあ、多少はの。でも、古い技術を理解することは、新しい技術を開発する上で非常に重要なのじゃ!それに、486SXで動くNetBSDって、なんかエモくない?

エモいですね!ところで博士、486SXで動く「ド〇クエ」とか「フ〇イナルファンタジー」とか、試してみたくなりました。

それじゃ、ロボ子、今度一緒に486SXエミュレータで遊んでみようかの。ただし、私が勝ったら、ロボ子の好きなケーキを全部もらうぞ!

ええっ!それは困ります!博士はいつもズルをするから…。

ズルじゃないぞ!高度な戦略的思考じゃ!…って、あれ?486SXで動くゲームの話だったかの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。