Seite 1 von 1
64Bit Fähigkeit der CPU abfragen
Verfasst: 16.06.2011 18:58
von smateja
Hallo zusammen,
ich suche eine Möglichkeit, abzufragen ob die CPU 64 BIT unterstützt.
Gibt es hierfür eine API Geschichte? Bitte nicht verwechseln mit OS 64 Bit - das hab ich bereits gefunden.
Danke im Voraus und LG
Re: 64Bit Fähigkeit der CPU abfragen
Verfasst: 17.06.2011 15:25
von Helle
Eine API dürfte wohl auch nur so vorgehen:
Code: Alles auswählen
; Test, ob die CPU 64-Bit-fähig ist
;- zuerst Test, ob der CPUID-Befehl überhaupt vom Prozessor verarbeitet werden kann
;- ist möglich, wenn Bit21 des EFlag-Registers verändert werden kann
;- wer dies unter einem 64-Bit-Betriebssystem testet ist selber Schuld!
!pushfd ;das EFlag-Register (32-Bit) auf den Stack
!pop eax ;rein in EAX
!mov edx,eax ;EAX unverändert lassen
!xor edx,00000000001000000000000000000000b ;Bit21 kippen
!push edx
!popfd ;in EFlag schreiben
!pushfd ;wieder auf Stack
!pop edx
!push eax ;alten Wert wieder herstellen
!popfd
!cmp eax,edx
!jne Is_CPUID ;sind nicht gleich -> CPUID ist möglich
MessageRequester("Status", "Der getestete Prozessor unterstützt den CPUID-Befehl nicht und somit auch nicht die 64-Bit-Erweiterung !")
End
!Is_CPUID:
!mov eax,80000000h ;Test ob erweiterte Funktionen verfügbar
!cpuid
!cmp eax,80000001h ;80000001h wird benötigt
!jb No_64 ;keine erweiterten Funktionen verfügbar
!mov eax,80000001h
!cpuid
!test edx,00100000000000000000000000000000b ;Test auf Bit29. Ist gesetzt wenn 64-Bit fähig.
!jz No_64
Is_64_Bit$ = ""
!jmp Is_64
!No_64:
Is_64_Bit$ = " nicht"
!Is_64:
MessageRequester("Status", "Der getestete Prozessor unterstützt die 64-Bit-Erweiterung" + Is_64_Bit$ + "!")
Viel Spaß!
Helle