プロセッサがサポートする機能          <TOP>


プロセッサがサポートする機能を取得します。

IsProcessorFeaturePresent プロセッサ機能がサポートされているかどうかを取得

 

 

'================================================================
'= プロセッサがサポートする機能
'=    (IsProcessorFeaturePresent.bas)
'================================================================

#define PF_FLOATING_POINT_PRECISION_ERRATA 0  '浮動小数点精度エラー発生可能性
#define PF_FLOATING_POINT_EMULATED 1          '浮動小数点演算がソフトウェアエミュレータを使ってエミュレート
#define PF_COMPARE_EXCHANGE_DOUBLE 2          '比較置換二重演算に対応
#define PF_MMX_INSTRUCTIONS_AVAILABLE 3       'MMX命令セットに対応
#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6      'XMMI命令セットに対応
#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7     '3D-Now命令セットに対応
#define PF_RDTSC_INSTRUCTION_AVAILABLE 8      'RDTSC命令セットに対応
#define PF_PAE_ENABLED 9                      'プロセッサはPAE-enabled

' プロセッサ機能がサポートされているかどうかを取得
Declare Function Api_IsProcessorFeaturePresent& Lib "kernel32" Alias "IsProcessorFeaturePresent" (ByVal ProcessorFeature&)

Declare Sub GetFeature(Index As Long, Msg As String)
Sub GetFeature(Index As Long, Msg As String)
    If Api_IsProcessorFeaturePresent(Index) = 0 Then
        Print Msg & ": false"
    Else
        Print Msg & ": true"
    End If
End Sub

GetFeature PF_FLOATING_POINT_PRECISION_ERRATA, "フローティングポイントエラー  "
GetFeature PF_FLOATING_POINT_EMULATED,         "浮動小数点演算エミュレート    "
GetFeature PF_COMPARE_EXCHANGE_DOUBLE,         "ダブルオペレーション          "
GetFeature PF_MMX_INSTRUCTIONS_AVAILABLE,      "MMX(MultiMedia eXtension)     "
GetFeature PF_XMMI_INSTRUCTIONS_AVAILABLE,     "XMMI                          "
GetFeature PF_3DNOW_INSTRUCTIONS_AVAILABLE,    "3D-Now(AMD社の拡張命令セット) "
GetFeature PF_RDTSC_INSTRUCTION_AVAILABLE,     "RDTSC(read-time stamp counter)"
GetFeature PF_PAE_ENABLED,                     "PAE-enabled(物理アドレス拡張) "

Stop
End