FromNandの日記

自分的備忘録

x86アセンブリのLEA命令って結局何をするの?

x86にはアドレスを取得する命令として「LEA」というものが存在する。
例えば「leal 4(%esp), %eax」とすると、eaxにesp+4の値が入る。
これなら「movl %esp, %eax」「addl $4, %eax」としたらいいじゃないかと思われると思うが、実はLEA命令はフラグに影響を与えない。
addl命令などはフラグに影響を与えてしまうため、処理によっては役に立つかもしれない。
また、lea命令は1命令で足し算ができてしまうため、足し算に使われることも多いらしい。