Structure CPUINFO
eax.i
ebx.i
ecx.i
edx.i
EndStructure
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
ProcedureDLL CPUID(*CP.CPUINFO, eax)
!PUSH eax
!PUSH ebx
!PUSH edx
!PUSH ecx
!mov dword edi,[p.p_CP+16]
!mov dword eax,[p.v_eax+16]
!CPUID
!mov dword [edi],eax
!mov dword [edi+4],ebx
!mov dword [edi+8],ecx
!mov dword [edi+12],edx
!pop ecx
!pop edx
!pop ebx
!pop eax
EndProcedure
CompilerElse
ProcedureDLL CPUID(*CP.CPUINFO, rax)
!PUSH rax
!PUSH rbx
!PUSH rdx
!PUSH rcx
!mov qword rdi,[p.p_CP+32]
!mov qword rax,[p.v_rax+32]
!CPUID
!mov qword [rdi],rax
!mov qword [rdi+8],rbx
!mov qword [rdi+16],rcx
!mov qword [rdi+24],rdx
!pop rcx
!pop rdx
!pop rbx
!pop rax
EndProcedure
CompilerEndIf