GCC 给我做了一些汇编代码,里面有这个语句:
lea eax, [ebx+eax]
(英特尔语法)
只是好奇,这有什么区别,和:
add eax, ebx
是?
eax 和 ebx 包含函数的返回值:)
mov eax, DWORD PTR [ebp+8]
mov DWORD PTR [esp], eax
call CALC1
mov ebx, eax.
mov eax, DWORD PTR [ebp+8]
mov DWORD PTR [esp], eax
call CALC2
lea eax, [ebx+eax]
最佳答案
立即想到的一个区别是 lea
不影响标志,而 add
做。
如果没有看到汇编代码的其余部分,就不可能说这是否有任何相关性。它可能只是 GCC 代码生成器的人工制品(即它实际上可以为更一般的情况生成代码,或者只是使用 lea
作为更灵活的 add
。)
关于assembly - x86-32 汇编中的 "lea eax, [ebx + eax]"和 "add eax, ebx"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316526/