为什么GCC使用两条指令递增一个值?

为什么GCC使用两条指令递增一个值?,gcc,assembly,x86,intel,disassembly,Gcc,Assembly,X86,Intel,Disassembly,为什么GCC使用 lea eax,[ebp-4] inc DWORD PTR [eax] 什么时候 理论上应该这样做吗?如果您认为答案涉及上述两个序列之间的区别,那么您实际的编程问题是什么?“它们是等价的。”雷蒙德陈我真的很好奇为什么会发生这种情况。我非常怀疑它是否有助于或损害性能,但有趣的是GCC会这样做。您是否要求优化?如果不这样做,则告诉编译器您不关心生成的代码有多好。请告诉我们您使用的确切源代码(并告诉我们它是什么语言),以及您用来编译它的命令行。编译器选择这两种指令形式的原因有很多。

为什么GCC使用

lea eax,[ebp-4]
inc DWORD PTR [eax]
什么时候


理论上应该这样做吗?

如果您认为答案涉及上述两个序列之间的区别,那么您实际的编程问题是什么?“它们是等价的。”雷蒙德陈我真的很好奇为什么会发生这种情况。我非常怀疑它是否有助于或损害性能,但有趣的是GCC会这样做。您是否要求优化?如果不这样做,则告诉编译器您不关心生成的代码有多好。请告诉我们您使用的确切源代码(并告诉我们它是什么语言),以及您用来编译它的命令行。编译器选择这两种指令形式的原因有很多。如果经常访问变量,那么如果您正在优化最小大小,重用EA会减少代码大小。但它没有实际意义,因此不适用于实际编程问题。@RaymondChen什么?从什么时候开始,每个stackoverflow问题都必须是实用的和有实际用途的?我不认为“不切实际”是一个接近的理由
inc DWORD PTR [ebp-4]