gaz: un trop grand nombre de référence de mémoire
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?
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