#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 |