|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.02.2024, 17:37 | #1 |
Пользователь
Регистрация: 16.06.2012
Сообщений: 34
|
Как происходит компиляция программы в Visual Studio и как ей управлять?
Объясните, пожалуйста, как происходит компиляция программ, написанных на C++ в Visual Studio. Происходит запуск компилятора CL.EXE, затем компоновщика LINK.EXE, в результате на выходе получается исполняемый файл формата PE. Если посмотреть структуру формата PE, то она такая:
Код:
Код:
|
26.02.2024, 20:02 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,772
|
Цитата:
Цитата:
А куда ж он девается? Глобальные переменные, кто инициализуует? Другие функции, кроме main куда деваются? |
||
26.02.2024, 23:01 | #3 |
Пользователь
Регистрация: 16.06.2012
Сообщений: 34
|
|
27.02.2024, 08:17 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,772
|
|
27.02.2024, 10:04 | #5 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
Если вопрос задается именно таким образом, ответ будет да. ЯВУ на то и ЯВУ, код на нем не является линейным.
|
27.02.2024, 11:08 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,772
|
|
28.02.2024, 07:12 | #7 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
В .data обычно попадают инициализированные глобальные переменные, в .rdata — строки, RTTI, импорты. Зависит от конкретного компоновщика, версии, параметров командной строки...
Вот, взял наугад первую попавшуюся программу — какую-то старую версию PuTTY: Код:
Разнесение переменных и констант по разным секциям повышает безопасность — страницы памяти, относящиеся к .rdata, защищены от записи на уровне процессора и ОС, попытка записи туда вызовет AV. Странно, что у секции ресурсов нет флага “discardable”. Смысл тогда отдельную секцию городить? Но это так, мои размышления вслух... |
28.02.2024, 08:30 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,772
|
|
28.02.2024, 11:53 | #9 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
|
07.03.2024, 10:00 | #10 |
Пользователь
Регистрация: 16.06.2012
Сообщений: 34
|
А какие ещё программы кроме PE Tool есть, желательно GUI?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
компиляция программы в Visual Studio на mac | Vano90 | Помощь студентам | 7 | 20.06.2016 12:14 |
Компиляция в Visual Studio 2012 | Hellgate | Помощь студентам | 2 | 01.10.2013 12:09 |
Компиляция релиза в Visual Studio для QT SDK 1.1.0 | tumanovalex | Qt и кроссплатформенное программирование С/С++ | 0 | 29.05.2011 19:32 |
компиляция проекта в Visual Studio 2008 | kess | Visual C++ | 1 | 16.03.2010 12:36 |
MS Visual Studio компиляция с ошибкой! | terran4ic | Помощь студентам | 16 | 02.10.2009 15:19 |