Question

D'après ce que j'ai lu mov, il copie le deuxième argument dans le premier argument. Alors, qu'est-ce que cela fait?

movl    8(%ebp),    %edx

Il copie tout ce qui est dans EDX au premier paramètre de la fonction (depuis un décalage de +8 de ebp est un paramètre)?

J'ai l'impression que ce que cela signifie vraiment, c'est déplacer le premier paramètre dans le edx Inscrivez-vous, mais j'ai lu sur Wikipedia que c'est l'inverse?

Était-ce utile?

La solution

movl 8(%ebp), %edx

est dans "AT&T Syntax"; Dans cette syntaxe, la source vient en premier et la destination deuxième. Alors oui, votre croyance est correcte. La plupart des documents utilisent la "syntaxe Intel", qui a la commande inverse. Ceci est une source de confusion considérable pour les personnes nouvelles à l'assemblage x86.

Dans la syntaxe Intel, votre instruction serait écrite:

mov edx, [ebp + 8]

Notez l'absence de % avant les noms de registre et l'utilisation de crochets au lieu de parenthèses pour l'adresse et l'absence d'un l suffixe sur l'instruction. Ce sont des cadeaux morts pour savoir quelle forme d'assemblage vous regardez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top