#ifdef WIN32 Win32のコード #else amd64のコード #endif |
#ifndef _AZU_WINDOW_CPUID_ #define _AZU_WINDOW_CPUID_ #include |
#include "cpuid.h"
CPUID::CPUID()
{
unsigned long tmp[4];
unsigned long x;
_cpuid(tmp,0);
standard_max=tmp[0];
standard=new unsigned long[(standard_max+1)<<2];
for(x=0;x!=(standard_max+1);x++)
_cpuid(&standard[x<<2],x);
if( (standard[1]==0x68747541) &&
(standard[2]==0x444d4163) &&
(standard[3]==0x69746e65) ){
_cpuid(tmp,0|0x80000000);
amd_max=tmp[0]&0x7fffffff;
amd=new unsigned long[(amd_max+1)<<2];
for(x=0;x!=(amd_max+1);x++)
_cpuid(&amd[x<<2],x|0x80000000);
}
}
|
;x86 ; Class CPUID .686P .XMM .model flat .code PUBLIC ?_cpuid@CPUID@@AAEXPAKK@Z ?_cpuid@CPUID@@AAEXPAKK@Z PROC push eax push ebx push ecx push edx push esi mov esi,dword ptr [esp+04h+14h] mov eax,dword ptr [esp+08h+14h] cpuid mov dword ptr[esi+00h],eax mov dword ptr[esi+04h],ebx mov dword ptr[esi+08h],ecx mov dword ptr[esi+0ch],edx pop esi pop edx pop ecx pop ebx pop eax ret 8 ?_cpuid@CPUID@@AAEXPAKK@Z ENDP END |
;x86 ; Class CPUID _TEXT SEGMENT PUBLIC ?_cpuid@CPUID@@AEAAXPEAKK@Z ?_cpuid@CPUID@@AEAAXPEAKK@Z PROC push rax push rbx push rsi mov rsi,rdx mov rax,r8 cpuid mov dword ptr [rsi+00h],eax mov dword ptr [rsi+04h],ebx mov dword ptr [rsi+08h],ecx mov dword ptr [rsi+0ch],edx pop rsi pop rbx pop rax ret 0 ?_cpuid@CPUID@@AEAAXPEAKK@Z ENDP _TEXT ENDS END |