タイトル | : Win95マシンで不正な命令 |
投稿日 | : 2002/03/05(Tue) 01:21 |
投稿者 | : PEN@海猫 |
> Mingw32-gcc(cygwinもかな?)では __try 〜 __except が
> きちんと実装されてないですからねぇ・・・
VisualC(以下VC)の__try/__exceptionはANSI-Cの範疇ではないので
実装されていなくて当然といえば当然です。
サポートされていないプラットフォーム向けにsignal/setjmpを利用して
不正命令(SSEがサポートされていない環境でのSSE命令の実行を含む)の検出を
行っているのですが(事実Linux/FreeBSDでは正しく動作しているようです)、
signalの実装すら正しくないためプログラムが落ちてしまうようです。
Mingwのruntimeでのsignalの実装を調べてみたのですが、どうやらそのまま
VCのMSVCRT.DLLのexportに対して処理を流すようにしてある様でして…。
予想からするに、VCでsignalを用いても正しくハンドリングできないのではないかなと。
# ユーザーモードでRDMSRができればなぁ...というか なんで
# サポート状態をCPUIDで取れないようにしてあるのかなぁ。