Frage

Nach dem, was ich über mov gelesen habe, wird das zweite Argument in das erste Argument kopiert.Was macht das dann?

movl    8(%ebp),    %edx

Es kopiert alles, was in edx steht, in den ersten Parameter der Funktion (da ein Offset von +8 vom ebp ein Parameter ist)?

Ich habe das Gefühl, dass dies wirklich bedeutet, den ersten Parameter in das edx-Register zu verschieben, aber ich habe auf Wikipedia gelesen, dass es umgekehrt ist?

War es hilfreich?

Lösung

movl 8(%ebp), %edx

ist in "AT & T Syntax";Bei dieser Syntax steht die Quelle an erster Stelle und das Ziel an zweiter Stelle.Also ja, dein Glaube ist richtig.Die meisten Dokumentationen verwenden die "Intel-Syntax" in umgekehrter Reihenfolge.Dies ist eine Quelle erheblicher Verwirrung für Personen, die neu in der x86-Assembly sind.

In Intel Syntax würde Ihre Anweisung geschrieben werden:

mov edx, [ebp + 8]

Beachten Sie das Fehlen von % vor den Registernamen und die Verwendung von eckigen Klammern anstelle von Klammern für die Adresse sowie das Fehlen eines l-Suffixes in der Anweisung.Dies sind tote Werbegeschenke, um zu wissen, welche Form der Montage Sie betrachten.

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