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
64Bit Fähigkeit der CPU abfragen
-
smateja
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
64Bit Fähigkeit der CPU abfragen
PB 4.6 / 32 Bit / 64 Bit
Re: 64Bit Fähigkeit der CPU abfragen
Eine API dürfte wohl auch nur so vorgehen:
Viel Spaß!
Helle
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$ + "!")
Helle