在我看来,为 asm 操作排序操作数的逻辑方式是src, dest,因为英语通常规定从这里到那里而不是相反。这是AT&T 语法,很少使用(或者至少,我从未有机会使用它进行编程)。相反的是Intel 语法,并且被广泛使用。这些名称对应于名义上起源它们的公司。[1]
谁能提供为什么英特尔语法被接受为标准的原因,以及为什么首先开发和使用这种排序?我认为 AT&T 语法更自然的假设是错误的吗?
顺序背后的 C 风格推理dest, src
:它类似于表达式中操作数的顺序,例如
mov dest, src
好像
dest = src
或者
add dest, src
好像
dest += src
(所以这些指令在视觉上类似于它们实际所做的。)这可能是一个合乎逻辑的解释。
谁能提供为什么英特尔语法被接受为标准的原因
好吧,这不是一个标准。没有规定汇编语法的 ISO 或 ECMA 标准。英特尔符号被大量使用,原因很简单,它在英特尔处理器手册中有很好的记录,英特尔是一家非常成功的公司,设计和销售了很多处理器。
AT&T 不能这么说。它是一家电话公司,从未在处理器设计方面做过很多事情,甚至已不复存在。他们做出了一些非常愚蠢的决定,使他们破产。该商品名被另一家电话公司 SBC 收购,然后重新命名。著名的贝尔实验室,Unix 和 C 的鼻祖,以及语法,被剥离为另一家名为 Lucent 的公司。也不再存在,被阿尔卡特收购。这些天谁拥有 Unix 有点不清楚,有很多诉讼,但 Novell 似乎领先。
操作数顺序只是另一个小端与大端的争论。如果选择两个,一个总是会被另一个认为是错误的。