Frage

Entschuldigung im Voraus, wenn ich etwas davon falsch habe. Ich kann es bearbeiten, später zu korrigieren, wenn es nicht zu störend ist.

Wenn mehrere Variablen im benachbarten Gedächtnis deklariert werden, wie ich es verstehe, werden Register erstellt, die eine Reihe von Bytes einkapseln, üblich sowie von dem Prozessor als Zahlen betrachtet und so mit einfachen Mathematik wie Add, Subtrahieren, Multiplizieren und Devid mutiert.

Es kann zu Abstraktionsgründen für die nicht überlappenden Steigerbereiche kommen, aber wie viele Langueges in einer gut definierten sequentiellen Reihenfolge, die der Coder bekannt ist ?

Zum Beispiel in einem Block des zugewiesenen Speichers, in dem jedes Bit mit 0. Bytes 0 bis 3 beginnt 3.

Wenn es Leistungsgründe nicht gibt, werden sie überwunden, indem sie ansonsten Werte in völlig neue Variablen kopieren und kompliziertere Prozesse durchführen müssen, um bestimmte Algorithmen zu erreichen, die sonst auf sehr niedrigem Niveau durchgeführt werden könnten?

War es hilfreich?

Lösung

An diesem Trick ist nichts auszusetzen, wenn er in der Montage erfolgt: Optimierer haben routinemäßig wissen, wo Teile einer Ganzzahl CPU -Zyklen sparen und die Größe des Codes reduzieren sollen. Wenn beispielsweise eine 32-Bit-Ganzzahlvariable auf einen Wert initialisiert wird, der nur 16 Bit passt, würde die Optimierung von Compilern den Anweisungen ersetzen, der einen 32-Bit Untere Bits der Variablen und löschen Sie die oberen 16 Bits. Darüber hinaus würden viele Optimierer noch weiter gehen: Wenn eine Konstante um 2^16 teilbar ist, würden sie den Wert geteilt durch 2^16 in die oberen 16 Bits und die unteren 16 Bits speichern.

Einige Architekturen beschränken solche Manipulationen auf Adressen bestimmter Eigenschaften, indem sie beispielsweise alle 4-Byte-Speicherlast-/Speicheranweisungen unter den von vier teilbaren Adressen erfordern. Diese Einschränkungen können die Anwendbarkeit von Teilwerttricks verringern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top