Was bedeutet das “.richten Sie" x86-Assembler-Richtlinie genau?

Werde ich eine Liste genau das, was ich nicht verstehe, und zeigen Sie die Teile, die ich nicht verstehen kann, wie gut.

First off,

Die .Richten Sie Die Richtlinie

  1. .richten integer, pad.
    Die .align-Direktive bewirkt, dass die nächsten Daten generiert werden ausgerichtet modulo integer Byte

1.~ ? : Was ist impliziert, mit "bewirkt, dass die nächsten Daten generiert werden ausgerichtet modulo integer Byte?" Ich kann vermuten, dass die nächsten Daten erzeugt, ist eine Speicher-zu-register-transfer, keine? Modulo würde bedeuten, dass der Rest einer division. Ich verstehe nicht, "ausgerichtet werden modulo integer Byte".......

Was wäre ein Rest von einer einfachen Daten-Erklärung und wie würden die nächsten Daten generiert wird ausgerichtet vom Rest nützlich sein? Wenn die nächsten Daten ausgerichtet ist modulo, das ist nämlich der nächste generierte Daten, was bedeutet, dass genau ist der Rest einer integer? Das macht absolut keinen Sinn.

Was konkret würde die .ausrichten, sagen, .align 8 Richtlinie ausgestellt x86 für eine Daten-byte-kompiliert von einem C -char, d.h., char CHARACTER = 0; werden für? Oder speziell codiert, die direkt mit dieser Richtlinie nicht vorläufige Assembler-code nach dem kompilieren C? Ich habe ausgetestet in der Montage und bemerkt, dass jede C/C++ - Deklarationen, wie chars, ints, floats usw. fügen Sie die Richtlinie .align 8 zu jedem von Ihnen, und fügen Sie andere Richtlinien, wie .bss, .zero, .globl, .text, .Letext0, .Ltext0.

Was sind all diese Richtlinien für, oder zumindest meine Haupt-Frage? Ich habe gelernt, eine Menge von der Haupt-x86-Assembly-Anweisungen, aber nie eingeführt wurde, oder wies auf all diese seltsamen Richtlinien. Wie beeinflussen Sie die opcodes, und Sie alle sind notwendig?

  • Es bedeutet nur, dass der assembler wird das nächste byte an eine Adresse teilbar durch integer, also wenn z.B. das Letzte byte wurde an 0x0eda dann normalerweise die nächste byte-Position im 0x0edb, aber mit einem .align 8 Richtlinie im Ort, das nächste byte-Position im 0x0ec0, die nächste Adresse, die teilbar ist durch 8
  • Beachten Sie, dass .align ist für alles, was die assembler-Ausgänge, wie Maschinen-code, nicht nur für das, was Sie in C nennen würde, "Daten"
Schreibe einen Kommentar