汇编中%eax(,%edx,$ 4)和(%eax,%edx,$ 4)之间有什么区别吗?

时间:2014-10-29 15:07:38

标签: assembly x86 att

我只想知道计算某些值(数值或地址)的方法之间是否存在任何差异。 %eax(,%edx,$ 4)和(%eax,%edx,$ 4)

据我了解,他们添加了%edx * 4 +%eax 然后我不确定在某些情况下我们是否愿意使用另一种方法。谢谢

1 个答案:

答案 0 :(得分:0)

两者均无效。比例因子不得包含$

(%eax,%edx,4)有效,并且对应于Intel语法[eax + edx*4]

但是%eax(,%edx,4)也无效。您可以尝试一下:

$ cat > foo.S
mov %eax,  %eax(,%edx,4)
(control-D)
$ gcc -c foo.S
foo.S: Assembler messages:
foo.S:1: Error: junk `(,%edx,4)' after register

或使用叮当声:

foo.S:1:15: error: unexpected token in argument list
mov %eax, %eax(,%edx,4)
              ^

或者http://godbolt.org/具有汇编源模式,或者您可以在C ++的asm("");语句中使用它。