Pregunta

Por lo que he leído sobre mov, copia el segundo argumento en el primer argumento.Entonces, ¿qué hace esto?

movl    8(%ebp),    %edx

¿Copia todo lo que está en edx al primer parámetro de la función (ya que un desplazamiento de +8 de ebp es un parámetro)?

Siento que lo que esto realmente significa es mover el primer parámetro al registro edx, pero leí en Wikipedia que es al revés.

¿Fue útil?

Solución

movl 8(%ebp), %edx

está en "Sintaxis de AT&T";en esta sintaxis, la fuente viene primero y el destino segundo.Entonces sí, tu creencia es correcta.La mayor parte de la documentación utiliza la "sintaxis Intel", que tiene el orden inverso.Esta es una fuente de confusión considerable para las personas nuevas en el ensamblaje x86.

En la sintaxis Intel, sus instrucciones se escribirían:

mov edx, [ebp + 8]

Note la ausencia de % antes de los nombres de los registros, y el uso de corchetes en lugar de paréntesis para la dirección, y la falta de un sufijo l en la instrucción.Estos son obsequios para saber qué forma de ensamblaje está viendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top