出于同样的原因,有多个Unix shell(bash,zsh,dash,Solaris的非POSIX-sh /bin/sh
等等):有人决定使用该语言的新实现(或者大多数兼容的),因为他们没有不喜欢现有语言或其具体实现.(除了功能,原因可能包括:旧的实现是非自由的,不能移植到他们想要的平台,速度慢等)
如果你做了一些挖掘并找到了历史,这将是一个更好的问题.哪一个先来?
我一直认为NASM更加明智,内存引用总是使用[addr]
,而不是试图从符号声明中推断操作数大小.我认为NASM应该允许mov reg, OFFSET symbol
,所以mov r32, imm32
无论你使用哪个汇编程序,你都可以毫不含糊地编写一些可以汇编的东西(就像你总是可以[mem]
用于MASM一样.)虽然你可以定义OFFSET
为扩展为空字符串的宏.
AT&T语法来自Unix,使用AT&T语法,用于Unix通常运行的RISC架构.GNU gcc(或者为x86发明了AT&T语法的人)遵循了这一传统.看到这个关于为什么AT&T语法如此奇怪(或多或少)的问题的优秀答案.