gas: demasiados referencia de memoria
Pregunta
Al compilar la siguiente instrucción:
movl 4(%ebp), 8(%ebp)
Tengo:. demasiados referencia de memoria
¿Qué hay de malo en ello?
Solución
El número antes del paréntesis es un desplazamiento de bytes (lo que provoca que se produzca una referencia a memoria), y no se puede tener dos de ellos con movl
. Es necesario mover temporalmente el valor de un registro en primer lugar.
movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
Otros consejos
No es una instrucción legal. Para la mayoría de las instrucciones que la memoria de referencia que debe moverlo a / desde un registro.
movl
no lo hace de memoria de la memoria se mueve, usted tiene que ir a través de un registro (por lo tanto con dos instrucciones movl
).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow