タグ

ブックマーク / suu-g.hateblo.jp (1)

  • lealについて - suu-g's diary

    lea命令は、Load Effective Address命令というもので、メモリ上の場所のアドレス値をレジスタに格納するもの。そのアドレスへのパイプを作っているような具合。なので、 leal 4(%esp), %eax とあったら、「ESPの値に4を足したメモリ位置」のアドレスを、EAXに格納するという意味になる。 端的に言うと、 EAX = ESP + 4 ってこと。 この命令を行うだけなら、二命令使って movl %esp, %eax addl $4, %eax としても同じ結果が得られそうなものだけど、では何のためにLEA命令があるのか。 実は、LEAは計算が目的じゃなくてアドレスを得るための命令なので、通常の計算命令と違ってフラグレジスタに影響を与えない。フラグに影響を与えないので、反復する命令に適している。*1 また足し算が一命令で出来てしまうので、その辺でも使われることがある

    lealについて - suu-g's diary
  • 1