トップページ > 過去ログ > 記事閲覧
機能の追加要望
名前:憂煉 日時: 2008/04/08 14:51

管理人様へ 最近のコンパイラはMMXだけでなくSSE命令にも対応してきているので、SSE命令の取得機能を追加してみました。おそらくバグはないと思います。よりしければ使ってください。 WINDATA構造体のメンバにint型でUseSSEFlagとUseSSE2Flagを追加して、その状態を得る関数を追加して、その後以下のようにDxWin.cppを以下のようにしてください。 あとはGetUseSSEFlag関数等を適当に追加してください。 DxWin.cppの変更点その1 CHECKMMX: // 今度はMMXが使えるか検査 MOV EAX , 1 } // db 0fh // db 0a2h cpuid __asm{ AND EDX , 00800000H JZ MMXEND MOV ENDMODE , 3 //SSEが使えるか検査 MOV EAX , 1 } cpuid __asm{ AND EDX , 02000000H JZ MMXEND ADD ENDMODE , 1 //SSE2が使えるか検査 MOV EAX , 1 } cpuid __asm{ AND EDX , 04000000H JZ MMXEND ADD ENDMODE , 1 MMXEND: POPFD } DxWin.cppの変更点その2 switch( ENDMODE ) { case 0 : DXST_ERRORLOG_ADD( "CPUID命令は使えません\n" ); break ; case 1 : DXST_ERRORLOG_ADD( "MMXは使えません\n" ); break ; case 3 : DXST_ERRORLOG_ADD( "MMX命令を使用します\n" ) ; WinData.UseMMXFlag = TRUE ; break ; case 4 : DXST_ERRORLOG_ADD( "MMX命令を使用します\n" ) ; DXST_ERRORLOG_ADD( "SSE命令が使用可能です\n" ) ; WinData.UseMMXFlag = TRUE ; WinData.UseSSEFlag = TRUE ; case 5 : DXST_ERRORLOG_ADD( "MMX命令を使用します\n" ) ; DXST_ERRORLOG_ADD( "SSE命令が使用可能です\n" ) ; DXST_ERRORLOG_ADD( "SSE2命令が使用可能です\n" ) ; WinData.UseMMXFlag = TRUE ; WinData.UseSSEFlag = TRUE ; WinData.UseSSE2Flag = TRUE ; }

Page: 1 |

Re: 機能の追加要望 ( No.1 )
名前:管理人 日時:2008/04/13 01:26

コードまで用意していただいてありがとうございます。 早速実装してみましたので、宜しければダウンロードして下さい。 http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 追加した関数は以下の関数です。 // SSEが使えるかどうかの情報を得る int GetUseSSEFlag( void ) ; // SSE2が使えるかどうかの情報を得る int GetUseSSE2Flag( void ) ; いずれも戻り値が TRUE だったら使える、ということになります。

Page: 1 |