【发布时间】:2011-02-08 12:16:12
【问题描述】:
我一直在努力掌握 x86 汇编语言,并想知道是否存在与 movl $1, %eax 相当的快捷方式。那时我认为列出该语言中经常使用的习语可能是个好主意。
这可能包括优先使用xorl %eax, %eax 而不是movl $0, %eax,或testl %eax, %eax 而不是cmpl $0, %eax。
哦,请在每个帖子中发布一个示例!
【问题讨论】:
-
movl $1, %eax非常快速和简短。在某些处理器上,xorl %eax, %eax实际上比movl $0, %eax慢。在其他情况下,incl %eax比addl $1, %eax慢。如果你在 2010 年遇到了编写汇编的麻烦,你应该知道你正在编写什么架构,然后选择你的“方言”(与语言隐喻保持一致)。 -
@Pascal Cuoq,您能否解释一下影响这种性能差异的因素是什么?我对
incl %eax比addl $1, %eax慢感到特别困惑。此外,如果您能指出一些详细说明此类行为的链接,我将不胜感激! -
对于 2010 年 xor eax 中的所有 x86 架构,eax 更快或等效,无论如何它更短。看看stackoverflow.com/questions/1396527/…。这几乎是自 486 年以来的事了。
-
投票结束太广泛了。提到的个别例子已经在其他帖子中提出。