在查看我的反汇编代码时,我看到了很多以下内容:

00B442E9  push        4
00B442EB  push        3
00B442ED  lea         ecx,[ebp-24h]
00B442F0  call        Foo::Bar (0B41127h)

我理解在调用之前推送参数,但是 lea 在这里做什么?

最佳答案

在Visual C++为x86使用的thiscall调用约定中,this指针在ecx寄存器中传递。该lea指令在调用成员函数之前将this指针复制到ecx寄存器中。

您可以在“堆栈溢出”问题"What's the purpose of the LEA instruction?"中阅读有关lea指令的所有信息。

关于c++ - 方法调用之前的 le​​a 指令是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6935465/

10-11 16:38