2010-03-07 11 views
9

MOV è probabilmente la prima istruzione che tutti imparano durante l'apprendimento dell'ASM.MOV src dest (o) MOV dest src?

Poco fa ho incontrato un libro Assembly Language Programming in GNU/Linux for IA32 Architectures By Rajat Moona che dice:

alt text http://i.imagehost.org/0897/mov.gif

Ma ho imparato che è MOV dest, src. È come "Carico dest con src". Anche lo Wiki dice lo stesso.

Non sto dicendo che l'autore abbia torto. So che ha ragione. Ma cosa mi manca qui?

btw .. sta utilizzando GCC as per assemblare queste istruzioni. Ma questo non dovrebbe cambiare la sintassi delle istruzioni, giusto?

+0

Avrei dovuto leggere la prefazione e il primo paragrafo del primo capitolo. Li ho saltati. :( – claws

risposta

27

mov dest, src si chiama sintassi Intel.

mov src, dest è chiamato AT & T sintassi.

L'assemblatore GNU utilizza la sintassi AT &, tutti gli altri assemblatori x86 che conosco utilizza la sintassi Intel. Puoi leggere le differenze on wikipedia.

+10

Alcune persone vogliono solo vedere il mondo bruciare – Paschalis

+0

Nota che l'assemblatore GNU utilizza la sintassi AT & T _by default_, non incondizionatamente. Puoi passare alla sintassi Intel usando la direttiva '.intel_syntax noprefix'. – Ruslan

1

Esistono due tipi distinti di sintassi del linguaggio assembly: Intel e AT & sintassi. È possibile trovare un confronto di entrambi su Wikipedia's assembly language page.

È probabile che il tuo libro utilizzi la sintassi AT & T, in cui l'operando sorgente viene prima della destinazione.

6

Sì, come/gas utilizzare AT & sintassi T che utilizza l'ordine src, dest. MASM, TASM, NASM, ecc. Utilizzano tutti l'ordine 'dest, src. "Come accade, la sintassi AT & T non si adatta molto bene con i processori Intel e (almeno IMO) è un pasticcio quasi illeggibile, ad esempio movzx

+0

" mess illeggibile "praticamente lo inchioda. –

Problemi correlati