2010-03-07 86 views
9

MOV可能是每个人在学习ASM时学到的第一条指令。MOV src dest(或)MOV dest src?

刚才我遇到了一本书Assembly Language Programming in GNU/Linux for IA32 Architectures By Rajat Moona它说:

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

但我了解到,这是MOV dest, src。它就像“加载destsrc”。即使Wiki也一样。

我并不是说作者是错的。我知道他是对的。但是我在这里错过了什么?

btw ..他正在使用GCC的as来组装这些说明。但是这不应该改变指令的语法?

+0

我应该读第1章的前言和第1段我跳过了他们: – claws 2010-03-07 19:27:13

回答

27

mov dest, src叫做英特尔语法

mov src, dest被称为AT & T语法

GNU汇编程序使用AT & T语法,我知道的所有其他x86汇编程序都使用Intel语法。你可以阅读差异on wikipedia

+10

有些人只是想看看世界的燃烧 – Paschalis 2015-05-20 00:49:41

+0

请注意,GNU汇编程序使用AT&T语法_by default_,而不是您可以使用'.intel_syntax noprefix'指令将其切换为英特尔语法。 – Ruslan 2017-12-06 11:13:33

1

有两种不同类型的汇编语言语法 - 英特尔和AT & T语法。 您可以在Wikipedia's assembly language page上找到两者的对比。

您的书可能会使用AT & T语法,其中源操作数位于目标之前。

6

是,as/gas使用AT & T语法使用命令src,dest。 MASM,TASM,NASM等都使用命令'dest,src'。碰巧,AT处理器的语法与英特尔处理器不太匹配,并且(至少IMO)几乎是不可读的,例如movzx出现特别差

+0

“无法读取的混乱”几乎是它的钉子。 – 2017-06-19 14:39:35