CPUID — Änderungen 4374 → 4548

Zeile 6: Zeile 6:
 
Um zum Beispiel den Vendor-ID-String, also den Herstellernamen, zu bekommen, ruft man CPUID mit der Funktionsnummer 0x00 auf.
 
Um zum Beispiel den Vendor-ID-String, also den Herstellernamen, zu bekommen, ruft man CPUID mit der Funktionsnummer 0x00 auf.
 
<asm>
 
<asm>
−
  mov eax, 0x00
+
  mov eax, 0x00; xor eax, eax bewirkt das selbe und ist schneller
 
  cpuid
 
  cpuid
 
</asm>
 
</asm>
Zeile 68: Zeile 68:
 
*''Chunks'' gibt die Größe einer Cache line in 8&nbsp;Byte Blocken an. Das Feld ist ebenfalls nur gültig in Verbindung mit einem gesetzten ''[[#EDX_-_Featureflags|CFLUSH-Flag]]''.
 
*''Chunks'' gibt die Größe einer Cache line in 8&nbsp;Byte Blocken an. Das Feld ist ebenfalls nur gültig in Verbindung mit einem gesetzten ''[[#EDX_-_Featureflags|CFLUSH-Flag]]''.
 
==== ECX ====
 
==== ECX ====
−
Hier soll ein Byte-Array sein, es wird aber nicht empfohlen, daraus zu lesen. Dieses Feld ist ein kommendes Feature. Es zählt also zu den reservierten Feldern.
+
Dieses Register gibt erweiterte Informationen über den Prozessor:
 +
{| {{Prettytable}}
 +
! Bits || Funktion
 +
|-
 +
| 9 || Verfügbarkeit von SSSE3
 +
|-
 +
| 5 || Verfügbarkeit von Virtual Machine Extensions (VMX)
 +
|-
 +
| 3 || Die Befehle MONITOR und MWAIT sind verfügbar
 +
|-
 +
| 0 || Verfügbarkeit von SSE3
 +
|}
 
==== EDX - Featureflags ====
 
==== EDX - Featureflags ====
 
Dies sind die Featureflags. Wenn ein Bit gesetzt(=1) ist, dann wird das entsprechende Feature unterstützt.
 
Dies sind die Featureflags. Wenn ein Bit gesetzt(=1) ist, dann wird das entsprechende Feature unterstützt.
Zeile 156: Zeile 167:
 
== Erweiterte Funktionen ==
 
== Erweiterte Funktionen ==
 
Es gibt Funktionen, die Hersteller spezifisch sind, d.h. sieh gelten nur nur für Intel- bzw. nur für AMD Prozessoren. Solche Befehle sollte man nicht ausführen, wenn man nicht weiß von welchem Hersteller die CPU ist! Zum Beispiel sollten CPUID-Befehle, die nur für Intel-CPUs gelten, nicht auf einer AMD-CPU ausgeführt werden. Diese Funktionen beginnen bei 0x80000000.
 
Es gibt Funktionen, die Hersteller spezifisch sind, d.h. sieh gelten nur nur für Intel- bzw. nur für AMD Prozessoren. Solche Befehle sollte man nicht ausführen, wenn man nicht weiß von welchem Hersteller die CPU ist! Zum Beispiel sollten CPUID-Befehle, die nur für Intel-CPUs gelten, nicht auf einer AMD-CPU ausgeführt werden. Diese Funktionen beginnen bei 0x80000000.
 +
 +
Erweiterte Funktionen von Intel:
 +
 +
=== EAX = 0x80000000 ===
 +
==== EAX ====
 +
Enthält maximale erweiterte Funktionsnummer.
 +
==== EBX ====
 +
Reserviert
 +
==== ECX ====
 +
Reserviert
 +
==== EDX ====
 +
Reserviert
 +
 +
=== EAX = 0x80000001 ===
 +
==== EAX ====
 +
Reserviert
 +
==== EBX ====
 +
Reserviert
 +
==== ECX ====
 +
Reserviert
 +
==== EDX ====
 +
Wenn Bit 29 gesetzt, dann ist Intel64-Technologie verfügbar
 +
 +
=== EAX = 0x80000002 ===
 +
==== EAX ====
 +
Eingebrannter String
 +
==== EBX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== ECX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== EDX ====
 +
Eingebrannter String (Fortsetzung)
 +
 +
=== EAX = 0x80000003 ===
 +
==== EAX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== EBX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== ECX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== EDX ====
 +
Eingebrannter String (Fortsetzung)
 +
 +
=== EAX = 0x80000004 ===
 +
==== EAX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== EBX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== ECX ====
 +
Eingebrannter String (Fortsetzung)
 +
==== EDX ====
 +
Eingebrannter String (Fortsetzung)
 +
  
 
== Siehe auch ==
 
== Siehe auch ==