![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GSasha |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 23.3.2008 Где: Ukraine Репутация: нет Всего: нет |
Привет всем!!!
Провожу исследование работы компилятора VC++; Есть простой код:
На TestFunc ставлю брейк и по Alt+8 в дизассемблере вижу такой код
Хочу понять принцип вызова методов и организацию стека по-подробней; То что параметры push-ают в стек справа на лево видно из примера но при вызове даного метода второй раз с параметрами получается вот такой код
Если кто-то в курсе, проясните и меня |
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
А что не понятно?
|
|||
|
||||
| GSasha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 23.3.2008 Где: Ukraine Репутация: нет Всего: нет |
Что копируется в eax?
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Значение локальной переменной.
Советую так же посмотреть на тот асм листинг, который выплёвывает(настраивается в параметрах проекта) сам компилятор. Там есть пояснения. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
GSasha
[ebp-0C] - это переменная t (находится в стеке) |
|||
|
||||
| GSasha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 23.3.2008 Где: Ukraine Репутация: нет Всего: нет |
Можна поконкретней про тот асм листинг, который выплёвывает(настраивается в параметрах проекта) сам компилятор.
Спасибо Добавлено через 4 минуты и 34 секунды А стек один для екземпляра приложения или для каждого метода создается новый стек? Добавлено через 8 минут и 32 секунды и почему именно [ebp-0c] Какое назначение ebp? |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Не знаю какая у вас версия Visual Studio, но как-то так:
Project Properties > C/C+ > Output Files |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
GSasha,
1. вы ошиблись разделом 2. прежде чем, задавать такие вопросы, почитайте что-нибудь по ассемблеру например С. Зубков "Assembler для DOS, Windows и UNIX" -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| GSasha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 23.3.2008 Где: Ukraine Репутация: нет Всего: нет |
Ok спасибо!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |