Форум программистов, компьютерный форум CyberForum.ru

Шаг компиляции, шаг компоновки, и шаг запуска - C++

Восстановить пароль Регистрация
 
Aligator_grin
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 5
27.05.2012, 13:47     Шаг компиляции, шаг компоновки, и шаг запуска #1
Что происходит на шаге компиляции, шаге компоновки, и шаге запуска, с переменными и функциями.
что происходит при встрече в коде объявления переменной и при встрече с ее инициализацией
например:
C++
1
2
int a;  //объявление
a=10;  // инициализация
Что происходит при встрече в коде объявления функции, ее вызова и ее реализации.
например:
C++
1
2
3
4
5
6
7
8
9
int a (); //объявление
 
int a()  // реализация
{ return 1; }
 
void main()
{
a();  // вызов
}
Хотелось бы чтобы было подробное объяснение по каждому из 3 шагов

Объяснения типа сначала из .cpp файла превращается в .obj а потом в .exe не интересуют
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 13:47     Шаг компиляции, шаг компоновки, и шаг запуска
Посмотрите здесь:

следующий шаг C++
Изменить шаг C++
C++ первый шаг он трудный самый!
C++ Герберт Шилдт, С++ Шаг за шагом
C++ Шаг в 0,5
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
27.05.2012, 13:57     Шаг компиляции, шаг компоновки, и шаг запуска #2
Объявления - компилятор записывает что "a" это гдето [ebp-4] или другое число вместо четырёх
а=10 это
mov eax,10
mov [ebp-кокоето порядковое число зависит от порядка распределения переменных] , eax
return 1 насчёт СИ не знаю а вот в случае с stdcall
это
mov eax,1
retn

a() вызов это
// вот тут может находится куча пушей, так как Push a+ 5/d неприемлемо то следует куча операций по записи в eax конечного результата а потом идёт push eax
call a


int a() - смотри через отладчик борланд строитель 6
Aligator_grin
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 5
27.05.2012, 14:06  [ТС]     Шаг компиляции, шаг компоновки, и шаг запуска #3
Вопрос не в том в какой машинный код все это переводится.
Это вопросы для зашиты лабораторной работы.
Суть ответа сводится к тому что нада сказать где и когда отводится место под переменные и функции в памяти когда проставляются адреса переменных и функций, когда получают значения переменных и функций. Что на каком этапе происходит, если функция объявлена в другом модуле.
Нужен точный ответ по знанию основ.
Ни в одной книге этого не описано
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
27.05.2012, 14:09     Шаг компиляции, шаг компоновки, и шаг запуска #4
Цитата Сообщение от Aligator_grin Посмотреть сообщение
Суть ответа сводится к тому что нада сказать где и когда отводится место под переменные и функции в памяти когда проставляются адреса переменных и функций, когда получают значения переменных и функций. Что на каком этапе происходит, если функция объявлена в другом модуле.
я так думаю вам надо смотреть исходники компилятора
Yandex
Объявления
27.05.2012, 14:09     Шаг компиляции, шаг компоновки, и шаг запуска
Ответ Создать тему
Опции темы

Текущее время: 19:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru