这个x86-64代码中的lea有什么作用?

时间:2013-04-24 07:02:30

标签: assembly x86-64

这是函数的前四行。我知道前两行在堆栈中创建一个新帧,基本上是“设置”行。 lea指令有什么作用?

40148e: 48 83 ec 18    sub    $0x18,%rsp
401492: 48 89 f2       mov    %rsi,%rdx
401495: 48 8d 4e 04    lea    0x4(%rsi),%rcx
401499: 48 8d 46 14    lea    0x14(%rsi),%rax

1 个答案:

答案 0 :(得分:2)

lea,加载有效地址,放置计算的"内存地址"在结果寄存器中。所以,rcx = rsi + 4rax = rsi + 0x14

顺便说一句,第二行看起来并不像是设置堆栈帧的代码的一部分,rsi是使用System V AMD64调用约定时的第二个参数