タイトル | : Win95マシンで不正な命令 |
投稿日 | : 2002/03/02(Sat) 13:14 |
投稿者 | : もと |
よその掲示板で話題になったんですが、Pentium3が載った
Win95マシンにおいて Mingw-gccでコンパイルしたgogo.dllを
使用すると不正な命令の例外が発生するようです。
ちょっと調べてみたのですが、Win95ではSSEサポートされていな
いのに setPIII_round()が呼び出され、そこで例外となっている
みたいです。
エラー時の情報
---------------
WINGOGO が無効な命令を実行しました。
モジュール : GOGO.DLL、アドレス : 019f:10021926
Registers:
EAX=00009f80 CS=019f EIP=10021926 EFLGS=00010202
EBX=ffffffff SS=01a7 ESP=007af48c EBP=007af4ac
ECX=007afd80 DS=01a7 ESI=00000000 FS=67b7
EDX=00000000 ES=01a7 EDI=1003bcb0 GS=0000
Bytes at CS:EIP:
0f ae 14 24 58 c3 90 90 90 90 90 90 90 90 90 90
Stack dump:
00009f80 10021996 00000004 10021a40 ffffffff 10021965
bff74277 1003bcb0 007af4cc 1000bc27 0043a348 bff76e28
ffffffff 00407639 10000000 004357d0
dllコンパイル時のMap(該当部分のみ)
--------------------
.text 0x100214c0 0x120 dllinst.o
0x10021500 DllMain@12
.text 0x100215e0 0xb0 thread.o
0x100215e0 gogo_create_thread
0x10021630 gogo_get_cpu_count
*fill* 0x10021690 0x10
.text 0x100216a0 0x92 clka.o
0x100216a0 clkbegin
0x100216e0 clkput
0x100216c0 clkend
*fill* 0x10021732 0xe
.text 0x10021740 0x20f cpua.o
0x10021920 setPIII_round
0x10021740 haveUNITa
0x10021940 maskFPU_exception
0x100218e0 haveFPU
*fill* 0x1002194f 0x1
.text 0x10021950 0x120 cpu.o
0x100219c0 initCPU
0x10021950 haveUNIT
0x100219d0 setupUNIT
*fill* 0x10021a70 0x10