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
Wo ist die Sperre für ein std :: atomic?
Wenn eine Datenstruktur mehrere Elemente enthält, kann die atomare Version nicht (immer) sperrfrei sein. Mir wurde gesagt, dass dies für größere Typen gilt, da die CPU die Daten nicht atomar ändern kann, ohne eine Art Sperre zu verwenden. zum Beispiel: #include <iostream> #include <atomic> struct foo { double a; double …
71 c++  c++11  x86  atomic  stdatomic 

6
Erweitertes REP MOVSB ​​für memcpy
Ich möchte erweitertes REP MOVSB ​​(ERMSB) verwenden, um eine hohe Bandbreite für eine benutzerdefinierte zu erhalten memcpy. ERMSB wurde mit der Ivy Bridge-Mikroarchitektur eingeführt. Weitere Informationen finden Sie im Abschnitt "Erweiterter REP MOVSB- und STOSB-Betrieb (ERMSB)" im Intel-Optimierungshandbuch, wenn Sie nicht wissen, was ERMSB ist. Ich weiß nur, dass ich …
71 c  gcc  assembly  x86  memcpy 

4
Was bedeutet die Anweisung "Sperren" in der x86-Assembly?
Ich habe eine x86-Assembly in Qts Quelle gesehen: q_atomic_increment: movl 4(%esp), %ecx lock incl (%ecx) mov $0,%eax setne %al ret .align 4,0x90 .type q_atomic_increment,@function .size q_atomic_increment,.-q_atomic_increment Durch Googeln wusste ich, dass lockAnweisungen dazu führen, dass die CPU den Bus sperrt, aber ich weiß nicht, wann die CPU den Bus freigibt …
69 c++  qt  assembly  x86 


1
Benötigen x86-Anweisungen ihre eigene Codierung sowie alle ihre Argumente, um gleichzeitig im Speicher vorhanden zu sein?
Ich versuche herauszufinden, ob es möglich ist, eine Linux-VM auszuführen, deren RAM nur von einer einzigen physischen Seite unterstützt wird. Um dies zu simulieren, habe ich den Handler für verschachtelte Seitenfehler in KVM so geändert, dass das vorhandene Bit aus allen NPT-Einträgen (Nested Page Table) entfernt wird, mit Ausnahme desjenigen, …

2
Schnellerer Teilbarkeitstest als% Operator?
Ich bemerkte eine merkwürdige Sache auf meinem Computer. * Der handschriftliche Teilbarkeitstest ist deutlich schneller als der %Bediener. Betrachten Sie das minimale Beispiel: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return …

1
Warum füllt die GCC-Aggregatinitialisierung eines Arrays das Ganze zuerst mit Nullen, einschließlich Nicht-Null-Elementen?
Warum füllt gcc das gesamte Array mit Nullen anstatt nur mit den verbleibenden 96 Ganzzahlen? Die Nicht-Null-Initialisierer befinden sich alle am Anfang des Arrays. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to …



2
Schwierigkeiten beim Verständnis der Logik in der zerlegten binären Bombenphase 3
Ich habe das folgende Montageprogramm aus dem Binärbombenlabor. Ziel ist es, das Schlüsselwort zu ermitteln, das zum Ausführen der Binärdatei erforderlich ist, ohne die explode_bombFunktion auszulösen . Ich habe meine Analyse der Baugruppe für dieses Programm kommentiert, aber ich habe Probleme, alles zusammenzusetzen. Ich glaube, ich habe alle Informationen, die …

1
Registriert vzeroall Null ymm16 bis ymm31?
Die Dokumentation für vzeroallerscheint inkonsistent. Die Prosa sagt: Der Befehl setzt den Inhalt aller XMM- oder YMM-Register auf Null. Der Pseudocode unten dass, zeigt jedoch, daß in 64-Bit - Modus - Register ymm0durch ymm15betroffen sind: IF (64-bit mode) limit ←15 ELSE limit ← 7 FOR i in 0 .. limit: …
8 assembly  x86  intel  avx  avx512 
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.