Als «x86» getaggte Fragen

x86 ist eine Architektur, die von der Intel 8086-CPU abgeleitet ist. Die x86-Familie umfasst die 32-Bit-IA-32- und 64-Bit-x86-64-Architekturen sowie ältere 16-Bit-Architekturen. Fragen zu letzterem sollten mit [x86-16] und / oder [emu8086] gekennzeichnet sein. Verwenden Sie das Tag [x86-64], wenn Ihre Frage spezifisch für 64-Bit-x86-64 ist. Verwenden Sie für die x86-FPU das Tag [x87]. Verwenden Sie für SSE1 / 2/3/4 / AVX * auch [sse] und alle zutreffenden [avx] / [avx2] / [avx512]

3
CPU-Berechtigungsringe: Warum werden die Ringe 1 und 2 nicht verwendet?
Einige Fragen zu den x86-CPU-Berechtigungsringen: Warum werden die Ringe 1 und 2 von den meisten Betriebssystemen nicht verwendet? Ist es nur, um die Codekompatibilität mit anderen Architekturen aufrechtzuerhalten, oder gibt es einen besseren Grund? Gibt es Betriebssysteme, die diese Ringe tatsächlich verwenden? Oder sind sie völlig unbenutzt?
102 x86  cpu  privileges 


11
Gleitkomma-Ganzzahl-Berechnungen auf moderner Hardware
Ich mache einige leistungskritische Arbeiten in C ++ und wir verwenden derzeit ganzzahlige Berechnungen für Probleme, die von Natur aus Gleitkommawerte sind, weil "es schneller ist". Dies verursacht eine Menge nerviger Probleme und fügt viel nervigen Code hinzu. Jetzt erinnere ich mich, dass ich gelesen habe, wie langsam Gleitkommaberechnungen ungefähr …

5
Was ist der Zweck des EBP-Rahmenzeigerregisters?
Ich bin ein Anfänger in Assemblersprache und habe festgestellt, dass der von Compilern ausgegebene x86-Code den Frame-Zeiger normalerweise auch im Release- / optimierten Modus herumhält, wenn er das EBPRegister für etwas anderes verwenden könnte. Ich verstehe, warum der Frame-Zeiger das Debuggen von Code erleichtert und möglicherweise erforderlich ist, wenn alloca()er …


6
Wie zerlege ich rohen 16-Bit-x86-Maschinencode?
Ich möchte den MBR (die ersten 512 Bytes) einer bootfähigen x86-Festplatte, die ich habe, zerlegen. Ich habe den MBR mit in eine Datei kopiert dd if=/dev/my-device of=mbr bs=512 count=1 Irgendwelche Vorschläge für ein Linux-Dienstprogramm, das die Datei zerlegen kann mbr?
90 linux  assembly  x86  x86-16  mbr 

2
Wie funktioniert x86-Paging?
Diese Frage soll das Vakuum guter freier Informationen zu diesem Thema füllen. Ich glaube, dass eine gute Antwort in eine große SO-Antwort oder zumindest in einige wenige Antworten passt. Das Hauptziel ist es, vollständigen Anfängern gerade genug Informationen zu geben, damit sie das Handbuch selbst erstellen und grundlegende Betriebssystemkonzepte im …


6
Warum versteckt Intel den internen RISC-Kern in seinen Prozessoren?
Beginnend mit Pentium Pro (P6-Mikroarchitektur) hat Intel seine Mikroprozessoren neu gestaltet und den internen RISC-Kern gemäß den alten CISC-Anweisungen verwendet. Seit Pentium Pro werden alle CISC-Anweisungen in kleinere Teile (uops) unterteilt und dann vom RISC-Kern ausgeführt. Am Anfang war mir klar, dass Intel beschlossen hat, neue interne Architekturen zu verbergen …



3
Die doppelte Umwandlung in Int ohne Vorzeichen unter Win32 wird auf 2.147.483.648 abgeschnitten
Kompilieren des folgenden Codes: double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } Ausgänge (MSVC …

2
Was bedeutet „rep; nein; " Mittelwert in x86-Assembly? Ist es dasselbe wie die Anweisung "Pause"?
Was heißt rep; nopdas Ist es dasselbe wie pauseAnweisung? Ist es dasselbe wie rep nop(ohne das Semikolon)? Was ist der Unterschied zu der einfachen nopAnweisung? Verhält es sich auf AMD- und Intel-Prozessoren anders? (Bonus) Wo ist die offizielle Dokumentation für diese Anweisungen? Motivation für diese Frage Nach einigen Diskussionen in …

3
Die Verwendung von gdb für einstufigen Assembler-Code außerhalb der angegebenen ausführbaren Datei führt zu dem Fehler "Grenzen der aktuellen Funktion können nicht gefunden werden".
Ich bin außerhalb der ausführbaren Zieldatei von gdb und habe nicht einmal einen Stapel, der diesem Ziel entspricht. Ich möchte sowieso in einem Schritt arbeiten, damit ich überprüfen kann, was in meinem Assemblycode vor sich geht, da ich kein Experte für x86-Assembly bin. Leider weigert sich gdb, dieses einfache Debuggen …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.