| 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 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 Byte Blocken an. Das Feld ist ebenfalls nur gültig in Verbindung mit einem gesetzten ''[[#EDX_-_Featureflags|CFLUSH-Flag]]''. | ||
==== ECX ==== | ==== ECX ==== | ||
| − | + | 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 == | ||