Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Coffee am 23. November 2006, 19:35
-
WIe kann man ermitteln, ob die CPU von Intel stammt oder von AMD ?
PS: ich schötze mal dass das einach ist, habs bei bitmaster gesehen dass dann da je nach cpu GenuineIntel oder AuthenticAMD stand
-
Du brauchst dazu die Funktion 1. Diese musst du in eax schreiben und dann cpuid aufrufen. In den registern ecx,ebx und edx (diese Reihenfolge) befindet sich dann ein (logischerweise) insgesamt 12 Byte großer String. Du kopiert diese Werte also einfach in einen leeren 12 Byte String und testest dann ob dieser AuthenticAMD oder GenuineIntel beinhaltet.
mov eax,1
cpuid
mov rsi,ZeroString
mov [rsi],ecx
mov [rsi+4],ebx
mov [rsi+8],edx
mov rsi,ZeroString
mov rdi,IntelString
mov rcx,12/4
rep cmpsd
je IntelCPU
mov rsi,ZeroString
mov rdi,AMDString
mov rcx,12/4
rep cmpsd
je AMDCPU
;keine AMD oder Intel CPU
...
Ich habe den Code jetzt auf die Schnelle geschrieben. Aber so oder so ähnlich sollte es Funktionieren. (64 Bit Register evt. in 32 Bit umwandeln).
bitmaster
-
oki danke ich probiers mal aus mit 32 bit reigsitern...
das ganzefunktioniert auch im realmode ne?
@bitmaster: du wolltest mir noch das image schicken.
-
das ganzefunktioniert auch im realmode ne?
logisch
du wolltest mir noch das image schicken.
Brauch ich doch nicht mehr. Ich bekomme in ein paar Tagen meinen neuen 64 Bit PC. *freu*
bitmaster
-
mkay danke nochmaaaaal :mrgreen: :mrgreen:
-
Denke aber daran, durch andere Tricksereien auch festzustellen, dass CPUID auch unterstützt wird (afaik erst ab späten 486ern [DX4, SL, SL2] und Pentiums unterstützt).
Sonst schmiert dein System sofort ab.
Gruß
-
naja ich werds testen mit mehreren system wos geht und do nich
(80286, 80486DX2, Pentium II, AMD DUron, AMD Athlon XP 2600+, AMD Athlon 64 3800+, ....)was so hier rumsteht
-
@Svenska: Stimmt habe ich ganz vergessen, da ich das ja nicht brauche. Denn jeder 64 Bit Prozessor hat den CPUID Befehl.
bitmaster