chino icon

CPUID

chino | PRO | 10/31/15 09:47:02 AM UTC | 0 ⭐ | 10431 👁️ | Never ⏰ | []
C++ (WinAPI) |

0 B

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <iomanip>
 
using namespace std;
 
void VendorID()
{
    unsigned long iEax = 0, iEbx = 0, iEcx = 0, iEdx = 0;
    char szVenderID[12] = {'\0'};
    __asm{
        mov eax, 0x0000000
        cpuid
 
        mov dword ptr[szVenderID+0], ebx
        mov dword ptr[szVenderID+4], edx
        mov dword ptr[szVenderID+8], ecx
        mov byte ptr[szVenderID+12], '\0'
 
        mov iEax, eax
        mov iEbx, ebx
        mov iEcx, ecx
        mov iEdx, edx
    }
 
    cout << "**** eax = 0x0000000 ****\n";
    cout << "EAX:0x" << setw(8) << setfill('0') << hex << iEax << endl;
    cout << "EBX:0x" << setw(8) << setfill('0') << hex << iEbx << endl;
    cout << "ECX:0x" << setw(8) << setfill('0') << hex << iEcx << endl;
    cout << "EDX:0x" << setw(8) << setfill('0') << hex << iEdx << endl;
    cout << "Vendor ID is " << szVenderID << endl;
    cout << "\n";
 
    return;
}
 
void ProcesserSerialNumber()
{
    unsigned long iEax = 0, iEbx = 0, iEcx = 0, iEdx = 0;
    __asm{
        mov eax, 0x0000003
        cpuid
 
        mov iEax, eax
        mov iEbx, ebx
        mov iEcx, ecx
        mov iEdx, edx
    }
 
    cout << "**** eax = 0x00000003 ****\n";
    cout << "EAX:0x" << setw(8) << setfill('0') << hex << iEax << endl;
    cout << "EBX:0x" << setw(8) << setfill('0') << hex << iEbx << endl;
    cout << "ECX:0x" << setw(8) << setfill('0') << hex << iEcx << endl;
    cout << "EDX:0x" << setw(8) << setfill('0') << hex << iEdx << endl;
    cout << "\n";
 
    return;
}
 
void HighestExtendedFunctionSupported()
{
    unsigned long iEax = 0, iEbx = 0, iEcx = 0, iEdx = 0;
    __asm{
        mov eax, 80000000h
        cpuid
 
        mov iEax, eax
    }
    cout << "**** eax = 80000000h ****\n";
    cout << "EAX:0x" << setw(8) << setfill('0') << hex << iEax << endl;
    cout << "\n";
 
    return;
}
 
void ProcessorBrandString()
{
    char szPBS[48] = {'\0'};
    __asm{
        mov eax, 80000002h
        cpuid
 
        mov dword ptr[szPBS+0], eax
        mov dword ptr[szPBS+4], ebx
        mov dword ptr[szPBS+8], ecx
        mov dword ptr[szPBS+12], edx
 
        mov eax, 80000003h
        cpuid
 
        mov dword ptr[szPBS+16], eax
        mov dword ptr[szPBS+20], ebx
        mov dword ptr[szPBS+24], ecx
        mov dword ptr[szPBS+28], edx
 
        mov eax, 80000004h
        cpuid
 
        mov dword ptr[szPBS+32] ,eax
        mov dword ptr[szPBS+36], ebx
        mov dword ptr[szPBS+40], ecx
        mov dword ptr[szPBS+44], edx
        mov word ptr[szPBS+48], '\0'
 
    }
 
    cout << "**** eax = 80000002h, 80000003h, 80000004h ****\n";
    cout << "Processor Brand String : " << szPBS << endl;
    cout << "\n";
 
    return;
}
 
void main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
 
    VendorID();
 
    ProcesserSerialNumber();
 
    HighestExtendedFunctionSupported();
    
    ProcessorBrandString();
 
    cin.get();
 
    return;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎