Als «assembly» getaggte Fragen

Fragen zur Assembler-Programmierung (asm). Stellen Sie sicher, dass Sie auch den Prozessor und / oder den Befehlssatz, den Sie verwenden, sowie den Assembler markieren. WARNUNG: Verwenden Sie für .NET-Assemblys stattdessen das Tag [.net-Assembly]. Verwenden Sie für Java ASM stattdessen das Tag [java-bytecode-asm].

12
Warum optimiert GCC nicht a * a * a * a * a * a bis (a * a * a) * (a * a * a)?
Ich mache eine numerische Optimierung für eine wissenschaftliche Anwendung. Eine Sache, die mir aufgefallen ist, ist, dass GCC den Aufruf pow(a,2)durch Kompilieren optimiert a*a, aber der Aufruf pow(a,6)nicht optimiert ist und tatsächlich die Bibliotheksfunktion aufruft pow, was die Leistung erheblich verlangsamt. (Im Gegensatz dazu eliminiert der ausführbare Intel C ++ …

14
Ist <schneller als <=?
Ist if( a &lt; 901 )schneller als if( a &lt;= 900 ). Nicht genau wie in diesem einfachen Beispiel, aber es gibt geringfügige Leistungsänderungen bei komplexem Schleifencode. Ich nehme an, dass dies etwas mit dem generierten Maschinencode zu tun hat, falls es überhaupt wahr ist.

10
Das Ersetzen eines 32-Bit-Schleifenzählers durch 64-Bit führt auf Intel-CPUs zu verrückten Leistungsabweichungen mit _mm_popcnt_u64
Ich suchte nach dem schnellsten Weg zu popcountgroßen Datenfeldern. Ich habe einen sehr seltsamen Effekt festgestellt : Durch Ändern der Schleifenvariablen von, unsignedum uint64_tdie Leistung auf meinem PC um 50% zu senken. Der Benchmark #include &lt;iostream&gt; #include &lt;chrono&gt; #include &lt;x86intrin.h&gt; int main(int argc, char* argv[]) { using namespace std; if …




30
Wann ist die Montage schneller als C?
Einer der angegebenen Gründe für die Kenntnis des Assemblers ist, dass er gelegentlich zum Schreiben von Code verwendet werden kann, der leistungsfähiger ist als das Schreiben dieses Codes in einer höheren Sprache, insbesondere C. Ich habe jedoch auch oft gehört, dass, obwohl dies nicht ganz falsch ist, die Fälle, in …
475 c  performance  assembly 


4
Warum scheint Java beim Einschalten zusammenhängender Ints mit hinzugefügten Fällen schneller zu laufen?
Ich arbeite an Java-Code, der stark optimiert werden muss, da er in heißen Funktionen ausgeführt wird, die an vielen Stellen in meiner Hauptprogrammlogik aufgerufen werden. Ein Teil dieses Codes beinhaltet das Multiplizieren von doubleVariablen durch 10Erhöhen auf beliebige nicht negative int exponents. Eine schnelle Art und Weise (edit: aber nicht …

10
Verwenden Sie GCC, um eine lesbare Baugruppe zu erstellen?
Ich habe mich gefragt, wie man GCC benutzt in meiner C-Quelldatei verwenden soll, um eine mnemonische Version des Maschinencodes zu sichern, damit ich sehen kann, in was mein Code kompiliert wird. Sie können dies mit Java tun, aber ich konnte mit GCC keinen Weg finden. Ich versuche, eine C-Methode in …
256 c  gcc  assembly 

3
Was ist eine Retpoline und wie funktioniert sie?
Um gegen Kernel oder prozessübergreifende Speicher Offenlegung (der zu mildern Specter Angriff), Kernel der Linux - 1 wird mit einer neuen Option kompiliert werden , -mindirect-branch=thunk-externeingeführt , um gccindirekte Gespräche über eine sogenannte auszuführen retpoline . Dies scheint ein neu erfundener Begriff zu sein, da eine Google-Suche erst in jüngster …

10
Wie sieht die Multicore-Assemblersprache aus?
Es war einmal, als Sie zum Schreiben eines x86-Assemblers beispielsweise Anweisungen hatten, die besagten: "Laden Sie das EDX-Register mit dem Wert 5", "Erhöhen Sie das EDX-Register" usw. Bei modernen CPUs mit 4 Kernen (oder sogar mehr) sieht es auf Maschinencodeebene nur so aus, als gäbe es 4 separate CPUs (dh …
243 assembly  x86  cpu  multicore  smp 

12
Ist 'switch' schneller als 'if'?
Ist eine switchAussage tatsächlich schneller als eine ifAussage? Ich habe den folgenden Code auf dem x64 C ++ - Compiler von Visual Studio 2010 mit dem folgenden /OxFlag ausgeführt: #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;time.h&gt; #define MAX_COUNT (1 &lt;&lt; 29) size_t counter = 0; size_t testSwitch() { clock_t start = …



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.