Pregunta

Al compilar la siguiente instrucción:

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

Tengo:. demasiados referencia de memoria

¿Qué hay de malo en ello?

¿Fue útil?

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
scroll top