ALIGN - Keyword (NASM)



  • Hi ich wollte frage was des Schlüsselwort ALIGN bewirkt.
    Heißt dass wenn ich es verwende, dass der nachfolgende Codeteil immer z.B. bei "ALIGN 4" 4-Byte ausgerichtet ist...aber bringt mir dass den überhaupt etwas wenn ein Maschinenbefehl einer x86 im Protected mode immer 4 Byte ist oder habe ich mich da vertan ? Danke schon mal im Voraus!

    .Net(Es)cape


  • Mod

    es kann nützlich sein sprungziele auf 16 byte auszurichten um einen cacheline-split bei der ersten instruktion garantiert zu verhindern (da maschinenbefehle maximal 15 byte lang sein dürfen). aus diesem grunde (und anderen auf älteren prozessoren) wirst du möglicherweise auf code stoßen, in dem funktionen grundsätzlich auf 16 byte ausgerichtet sind. in bestimmten fällen kann das auch bei schleifen ein en sinn machen - das muss man sich dann von fall zu fall ansehen. primär wird align für datenstrukturen eingesetzt, denn, im gegensatz zu einem C compiler o.ä., es werden hier größere datenstrukturen nicht auttomatisch mit ihrem natürlichen alignment angelegt, dafür musst du als programmierer selbst sorgen.


Anmelden zum Antworten