2010-03-07 5 views
9

MOV ist wahrscheinlich die erste Anweisung, die jeder lernt, während er ASM lernt.MOV src dest (oder) MOV dest src?

Soeben traf ich ein Buch Assembly Language Programming in GNU/Linux for IA32 Architectures By Rajat Moona die sagt:

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

Aber ich habe gelernt, dass es MOV dest, src ist. Es ist wie "Laden dest mit src". Selbst Wiki sagt das selbe.

Ich sage nicht, dass der Autor falsch ist. Ich weiß, dass er recht hat. Aber was fehlt mir hier?

btw .. Er verwendet GCC as, um diese Anweisungen zu montieren. Aber das sollte die Befehlssyntax nicht ändern, oder?

+0

ich habe das Vorwort und 1. Absatz 1. Kapitel lesen. ich sie übersprungen. :( – claws

Antwort

27

mov dest, src heißt Intel-Syntax.

mov src, dest heißt AT & T Syntax.

Der GNU-Assembler verwendet AT & T-Syntax, alle anderen x86-Assembler, die ich kenne, verwenden Intel-Syntax. Sie können die Unterschiede on wikipedia nachlesen.

+10

Manche Leute sehen wollen einfach nur die Welt brennen. – Paschalis

+0

Beachten sie, dass GNU Assembler AT & T-Syntax _by default_ verwendet, nicht bedingungslos. Sie können es mit der Direktive '.intel_syntax noprefix' in die Intel-Syntax umwandeln. – Ruslan

1

Es gibt zwei verschiedene Arten von Assembler-Syntax - Intel und AT & T-Syntax. Sie können einen Vergleich von beiden auf Wikipedia's assembly language page finden.

Wahrscheinlich verwendet Ihr Buch die AT & T-Syntax, wobei der Quelloperand vor dem Ziel steht.

6

Ja, wie/Gas verwenden AT & T-Syntax, die die Reihenfolge verwendet src, dest. MASM, TASM, NASM usw. verwenden alle die Reihenfolge 'dest, src ". AT & T-Syntax passt nicht sehr gut zu Intel-Prozessoren und (zumindest IMO) ist eine fast unlesbare Unordnung. ZB movzx kommt besonders schlecht aus.

+0

" unlesbare Unordnung "ziemlich viel Nägel es. –