我只想知道计算某些值(数值或地址)的方法之间是否存在任何差异。 %eax(,%edx,$ 4)和(%eax,%edx,$ 4)
据我了解,他们添加了%edx * 4 +%eax 然后我不确定在某些情况下我们是否愿意使用另一种方法。谢谢
答案 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("");
语句中使用它。