Kann jemand erklären, was der folgende Assembler-Code bewirkt? int 0x80
Kann jemand erklären, was der folgende Assembler-Code bewirkt? int 0x80
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());...
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...
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,...
Um es klar zu machen, ich werde hier keine Portabilität anstreben, daher sind alle Lösungen, die mich an eine bestimmte Box binden, in Ordnung. Grundsätzlich habe ich eine if-Anweisung, die in 99% der Fälle als wahr ausgewertet wird, und versuche, jede letzte Uhr der Leistung herauszuholen. Kann...
Ich habe im Compiler-Explorer herumgespielt und festgestellt, dass die Reihenfolge der an std :: min übergebenen Argumente die ausgegebene Assembly ändert. Hier ist das Beispiel im Godbolt Compiler Explorer double std_min_xy(double x, double y) { return std::min(x, y); } double...
Ich möchte Android-x86 2.2 als Emulator unter Windows 7 verwenden. Ich habe VirtualBox und die ISO heruntergeladen und eine virtuelle Maschine damit erstellt, kann aber die Auflösung nicht auf 320x480oder ähnliches einstellen . Das folgende Tutorial " Verwenden des Android-x86-Ports als...
Doppelte Werte speichern eine höhere Genauigkeit und sind doppelt so groß wie ein Float. Sind Intel-CPUs jedoch für Floats optimiert? Das heißt, sind doppelte Operationen genauso schnell oder schneller als Float-Operationen für +, -, * und /? Ändert sich die Antwort für 64-Bit-Architekturen?...
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...
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...
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...
In meinem Unternehmen haben einige Kunden angerufen, weil unser Programm mit einer Zugriffsverletzung auf ihren Systemen abstürzt. Der Absturz tritt in SQLite 3.6.23.1 auf, das wir als Teil unserer Anwendung ausliefern. (Wir liefern einen benutzerdefinierten Build aus, um dieselben VC ++ -...
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...
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...
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...
Auf der Wikpedia-Seite zu .COM-Dateien https://en.wikipedia.org/wiki/COM_file heißt es: .COM-Dateien unter DOS setzen alle x86-Segmentregister auf den gleichen Wert und das SP-Register (Stack Pointer) auf 0xFFFE. Der Stack beginnt also ganz oben im Speichersegment und arbeitet von dort aus. Dies...
Für die Funktion, die ich schreibe, möchte ich eine Nan zurückgeben, wenn die Eingabe keinen Sinn ergibt. Wie kann ich am einfachsten ein NaN in ein xmm-Register einfügen
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...
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,...