dest MOV src (o) MOV src dest?

votos
9

MOV es probablemente la primera instrucción de todo el mundo aprende mientras que el aprendizaje ASM.

Hace un momento me encontré con un libro de lenguaje ensamblador de programación en GNU / Linux para IA32 Arquitecturas Por Rajat Moona que dice:

texto alternativo http://i.imagehost.org/0897/mov.gif

Pero he aprendido que es MOV dest, src. Es como carga destcon src. Incluso Wiki dice lo mismo.

No estoy diciendo que el autor está mal. Sé que tiene razón. Pero lo que me estoy perdiendo aquí?

por cierto .. él está utilizando GCC aspara ensamblar estas instrucciones. Pero eso no debería cambiar la derecha sintaxis de la instrucción?

Publicado el 07/03/2010 a las 18:10
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
1

Hay dos tipos distintos de la sintaxis del lenguaje ensamblador - Intel y la sintaxis de AT & T. Usted puede encontrar una comparación de ambos en la página de lenguaje de ensamblaje de Wikipedia .

Es probable que su libro utiliza la sintaxis de AT & T, donde el operando fuente se presenta ante el destino.

Respondida el 07/03/2010 a las 18:14
fuente por usuario

votos
27

mov dest, srcse llama sintaxis de Intel .

mov src, destse llama sintaxis AT & T .

El ensamblador GNU utiliza la sintaxis de AT & T, todos los otros ensambladores x86 que conozco utiliza la sintaxis de Intel. Puede leer sobre las diferencias en la Wikipedia .

Respondida el 07/03/2010 a las 18:14
fuente por usuario

votos
6

Sí, como / el uso del gas sintaxis AT & T que utiliza el src orden, dest. MASM, TASM, NASM, etc., todos utilizan el orden 'dest, src". Si llega el caso, AT & T sintaxis no encaja muy bien con los procesadores de Intel, y (al menos OMI) es un desastre casi ilegible. Ej movzxsale particular malo.

Respondida el 07/03/2010 a las 18:14
fuente por usuario

votos
1

Como ya se mencionó en la respuesta por Jerry Ataúd, se ajusta a la sintaxis de Intel mejor con la codificación de instrucciones para la arquitectura x86. Como un comentario en estados desensamblador depurador de mi, " los operandos aparecen en la instrucción en el mismo orden en que aparecen en la salida desmontaje ". Por ejemplo, considere esta instrucción:

-a
1772:0100 test word [AA55], 1234
1772:0106
-u 100 l 1
1772:0100 F70655AA3412      test    word [AA55], 1234
-

Como se puede leer en el hexdump código de operación, el código de instrucción 0F7hes primero, luego el byte Modr / M 06h, entonces la palabra de desplazamiento ascendente hacia la izquierda 0AA55h, y, finalmente, la palabra inmediata 1234h. La sintaxis de Intel coincide con el orden en el origen de ensamblaje. En el AT & T sintaxis este se vería como testw $0x1234, (0xAA55)el que intercambia el orden en comparación con la codificación.

Respondida el 09/03/2020 a las 09:35
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more