| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > исследование работы компилятора VC++ |
| Автор: GSasha 23.3.2008, 20:18 | ||||||
| Привет всем!!! Провожу исследование работы компилятора VC++; Есть простой код:
На TestFunc ставлю брейк и по Alt+8 в дизассемблере вижу такой код
Хочу понять принцип вызова методов и организацию стека по-подробней; То что параметры push-ают в стек справа на лево видно из примера но при вызове даного метода второй раз с параметрами получается вот такой код
Если кто-то в курсе, проясните и меня |
| Автор: Daevaorn 23.3.2008, 20:22 |
| А что не понятно? |
| Автор: GSasha 23.3.2008, 20:30 | ||
Что копируется в eax?
|
| Автор: Daevaorn 23.3.2008, 20:37 |
| Значение локальной переменной. Советую так же посмотреть на тот асм листинг, который выплёвывает(настраивается в параметрах проекта) сам компилятор. Там есть пояснения. |
| Автор: bsa 23.3.2008, 20:40 |
| GSasha [ebp-0C] - это переменная t (находится в стеке) |
| Автор: GSasha 23.3.2008, 20:44 |
| Можна поконкретней про тот асм листинг, который выплёвывает(настраивается в параметрах проекта) сам компилятор. Спасибо Добавлено через 4 минуты и 34 секунды А стек один для екземпляра приложения или для каждого метода создается новый стек? Добавлено через 8 минут и 32 секунды и почему именно [ebp-0c] Какое назначение ebp? |
| Автор: Daevaorn 23.3.2008, 20:57 |
| Не знаю какая у вас версия Visual Studio, но как-то так: Project Properties > C/C+ > Output Files |
| Автор: MAKCim 23.3.2008, 21:12 |
| GSasha, 1. вы ошиблись разделом 2. прежде чем, задавать такие вопросы, почитайте что-нибудь по ассемблеру например С. Зубков "Assembler для DOS, Windows и UNIX" |
| Автор: GSasha 23.3.2008, 21:15 |
| Ok спасибо! |