Question

Lors de la compilation de l'instruction suivante:

movl 4(%ebp), 8(%ebp)

Je suis:. trop référence mémoire

Qu'est-ce qui ne va pas avec elle?

Était-ce utile?

La solution

Le nombre avant la parenthèse est un décalage d'octet (qui fait une référence mémoire de se produire), et vous ne pouvez pas avoir deux d'entre eux avec movl. Vous devez déplacer la valeur temporairement à un registre en premier.

movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)

Autres conseils

Il n'est pas une instruction juridique. Pour la plupart des instructions que la mémoire référence, vous devez le déplacer vers / à partir d'un registre.

movl ne pas déplace la mémoire de mémoire, vous devez passer par un registre (donc avec deux instructions de movl).

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