Что делает инструкция lea перед вызовом метода? - PullRequest
7 голосов
/ 04 августа 2011

При просмотре моего разобранного кода я вижу много следующего:

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

Я понимаю, что нужно нажать параметры перед вызовом, но что здесь делает lea

Ответы [ 2 ]

12 голосов
/ 04 августа 2011

В соглашении о вызовах thiscall, используемом Visual C ++ для x86, указатель this передается в регистр ecx.Эта инструкция lea копирует указатель this в регистр ecx перед вызовом функции-члена.

Вы можете прочитать все об инструкции lea в вопросе переполнения стека "Что такоецель инструкции LEA? "

2 голосов
/ 04 августа 2011

Я думаю, что это просто оптимизированная форма

mov ecx, ebp
sub ecx, 24h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...