在查看我的反汇编代码时,我看到了很多以下内容:
00B442E9 push 4 00B442EB push 3 00B442ED lea ecx,[ebp-24h] 00B442F0 call Foo::Bar (0B41127h)
我理解在通话之前推送参数,但是lea在这做什么?
解决方法
在Visual C for x86使用的thiscall调用约定中,this指针在ecx寄存器中传递.该lea指令在调用成员函数之前将this指针复制到ecx寄存器中.
您可以在Stack Overflow问题“What’s the purpose of the LEA instruction?”中阅读有关lea指令的所有内容