【发布时间】:2015-04-17 14:20:53
【问题描述】:
我在 64 位机器上使用 gcc -m32 进行编译。
以下有什么区别?请注意,这是 AT&T 语法。
# this
movd %edx, %xmm0
# and this
movl %edx, (%esp)
movd (%esp), %xmm0
【问题讨论】:
-
第一个不应该是
movd %edx, %xmm0吗? -
您忘记启用优化?不同之处在于第二个在堆栈上留下了一个副本,以后可能需要。不过,更好的方法是将堆栈写入添加到版本 #1。
-
@PascalCuoq 你是对的。让我编辑问题。
-
@lurker 哦,对不起。我假设使用 gcc 编译会默认提供 AT&T 语法。我应该明确表示。
-
那是我的错。你所拥有的显然是 AT&T 语法,但我习惯于思考英特尔,我完全过滤掉了线索。我收回我的评论... :)
标签: assembly x86 sse att micro-optimization