• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 怎樣用程序取得CPU信息

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    很 多 軟 件 可 以 判 斷所 運 行 的 電 腦 類 型 而 自 動 做 不 同 的 處 理。 如PhotoShop 5 可 以 探 測CPU 是 否 有MMX 支 持 而 調 用 不 同 的 處 理 函數,《 金 山 詞 霸》 發 現 有MMX 支 持 會 產 生 半 透 明 的翻 譯 提 示, 很 多 軟 件 可 以
     很 多 軟 件 可 以 判 斷所 運 行 的 電 腦 類 型 而 自 動 做 不 同 的
    處 理。 如PhotoShop 5 可 以 探 測CPU 是 否 有MMX 支 持 而 調 用 不
    同 的 處 理 函數,《 金 山 詞 霸》 發 現 有MMX 支 持 會 產 生 半 透
    明 的翻 譯 提 示, 很 多 軟 件 可 以 區 分Intel,Cyrix,AMD 的CPU...

    現 在, 且 讓 我 細 細道 來 如 何 讓 你 在 自 己 的 程 序 中 取
    得CPU 信 息。

    主 要 可 利 用 利 用CPUID 匯 編 指 令( 機 器 碼:0FH A2H, 如 果 你
    的 編 譯 器 不 支 持CPUID 指 令, 只 有emit 機 器 碼 了) 該 指 令
    可 以 被 如 下CPU 識別

    Intel 486 以 上 的CPU,
    Cyrix M1 以 上 的CPU,
    AMD Am486 以 上 的CPU

    (1) 取CPU OEM 字 符 串, 判 斷CPU 廠商

    先 讓EAX=0, 再 調 用CPUID

    Inel 的CPU 將 返 回:

    EBX:756E6547H 'Genu'
    EDX:49656E69H 'ineI'
    ECX:6C65746EH 'ntel'
    EBX,EDX,ECX 將 連 成"GenuineIntel", 真 正 的Intel。
    Cyrix 的CPU 將 返 回:
    EBX:43797269H
    EDX:78496E73H
    ECX:74656164H
    "CyrixInstead","Cyrix 來 代 替"。
    AMD 的CPU 將 返 回:
    EBX:41757468H
    EDX:656E7469H
    ECX:63414D44H
    "AuthenticAMD", 可 信 的AMD。

    在Windows98 中, 用 右 鍵 單 擊" 我 的 電 腦", 選 擇" 屬 性- 常 規"
    在 計 算 機描 述 處 就 可 看 見CPU OEM 字 符 串。

    (2)CPU 到 底 是 幾86, 是 否 支 持MMX

    先 讓EAX=1, 再 調 用CPUID

    EAX 的 8 到11 位 就 表 明 是 幾86

    3 - 386
    4 - i486
    5 - Pentium
    6 - Pentium Pro Pentium II
    2 - Dual Processors
    EDX 的 第0 位: 有 無FPU

    EDX 的 第23 位:CPU 是 否 支 持IA MMX, 很 重 要 啊 ! 如 果 你 想 用
    那57 條 新 增 的 指 令, 先 檢查 這 一 位 吧, 否 則 就 等 著 看Windows
    的" 該 程 序 執行 了 非 法 指 令, 將 被 關 閉" 吧。

    (3) 專 門 檢 測 是 否P6 架 構

    先 讓EAX=1, 再 調 用CPUID

    如 果AL=1, 就 是Pentium Pro 或Pentium II

    (4) 專 門 檢 測AMD 的CPU 信 息

    先 讓EAX=80000001H, 再 調 用CPUID

    如 果EAX=51H, 是AMD K5

    如 果EAX=66H, 是K6

    K7 是 什 么 標 志, 只 有 等 大 家拿 到K7 的 芯 再 說 了。

    EDX 第0 位: 是 否 有FPU( 多 余 的 !誰 用 過 沒FPU 的K5,K6?)

    EDX 第23 位,CPU 是 否 支 持MMX,

    程 序 如 下: 是C++Builder 的 控 制臺 程 序, 可 以 給 出 你 的" 心"
    的 信 息。 如 果 把這 個 技 術 用 于DLL 中, 便 可 以 使VB 程 序
    也 知 道" 心" 的 信 息。

    //--CPUID Instruction Demo Program
    #include

    #include

    #pragma hdrstop
    //----
    #pragma inline
    #pragma argsused
    int main(int argc, char **argv)
    {
    char OEMString[13];

    int iEAXValue,iEBXValue,iECXValue,iEDXValue;
    _asm {
        mov eax,0
        cpuid
        mov DWORD PTR OEMString,ebx
        mov DWORD PTR OEMString+4,edx
        mov DWORD PTR OEMString+8,ecx
        mov BYTE PTR OEMString+12,0
        }

    cout< < "This CPU 's OEM String is:"< < OEMString< < endl;

    _asm {
        mov eax,1
        cpuid
        mov iEAXValue,eax
        mov iEBXValue,ebx
        mov iECXValue,ecx
        mov iEDXValue,edx
        }

    if(iEDXValue&0x800000)
    cout < < "This is MMX CPU"< < endl;
    else
    cout < < "None MMX Support."< < endl;

    int iCPUFamily=(0xf00 & iEAXValue) > >8;
    cout < < "CPU Family is:"< < iCPUFamily< < endl;

    _asm{
        mov eax,2
         CPUID
    }
    if(_AL==1)
    cout < < "Pentium Pro or Pentium II Found";

    getch();
            return 0;
    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>