MOV является, вероятно, первой инструкцией, которую все изучают при изучении ASM.
Сейчас я встретился с книжным Программированием Ассемблера в GNU/Linux для Архитектуры IA32 Rajat Moona, который говорит:
сопроводительный текст http://i.imagehost.org/0897/mov.gif
Но я узнал, что это MOV dest, src
. Как "Загрузка dest
с src
". Даже Wiki говорит то же.
Я не говорю, что автор неправ. Я знаю, что он прав. Но что я пропускаю здесь?
btw.. он использует GCC's as
собрать эти инструкции. Но это не должно изменять право синтаксиса инструкции?
mov dest, src
вызывается синтаксисом Intel .
mov src, dest
вызывается синтаксисом AT&T .
Ассемблеры UNIX, включая ассемблер GNU, используют синтаксис AT&T, все другие известные мне ассемблеры x86 используют синтаксис Intel. Вы можете прочитать о различиях в Википедии .
Да, поскольку / gas использует синтаксис AT&T, который использует порядок src, dest. MASM, TASM, NASM и т. Д. Используют порядок "dest, src". Как оказалось, синтаксис AT&T не очень хорошо сочетается с процессорами Intel и (по крайней мере, IMO) представляет собой почти нечитаемый беспорядок. Например, movzx
выходит особенно плохо.
Существует два различных типа синтаксиса языка ассемблера - синтаксис Intel и AT&T. Вы можете найти сравнение обоих на странице ассемблера в Википедии .
Скорее всего, ваша книга использует синтаксис AT&T, где исходный операнд стоит перед целевым.