Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
Mirmik
techpriest
631 / 210 / 57
Регистрация: 27.02.2014
Сообщений: 1,153
1

Книга по startup магии

13.06.2016, 18:00. Просмотров 481. Ответов 8
Метки нет (Все метки)

Ребят! Есть какая-нибудь книжка или читабльный man, рассказывают, что делается между зпуском программы и вызовом функции main?

И про скрипты линкёра (смежная тема) то же почитать что-нибудь хотелось бы...
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2016, 18:00
Ответы с готовыми решениями:

Побитовые операции / осваивание магии 0 и 1
Вводится короткое целое неотрицательное число. Начиная с младших бит, произвести замену каждой...

Не хотите ли немного магии? [адресация char] (обращение к масиву через элемент соседнего массива)
Небезызвестные крестики-нолики. Со вчера у меня Компьютер решил изменить свой алгоритм работы и...

Получить экземпляр делегата с использованием черной магии
Есть Generic делегат. Есть поле класса, типа этого делегата. Нужно с помощью рефлексии засунуть...

Правка технической части Героев Меча и Магии 3
У меня, очевидно, одна из игр, которая никогда не надоест. Время от времени возвращаюсь к ней ...

Герои меча и магии 3: проблема с соединением для игры по сети
Ребят, выручайте :) С товарищем пытаемся сыграть в герои 3, но не можем присоединиться друг к...

8
Evg
Эксперт CАвтор FAQ
20409 / 7931 / 613
Регистрация: 30.03.2009
Сообщений: 22,085
Записей в блоге: 30
13.06.2016, 21:00 2
Цитата Сообщение от Mirmik Посмотреть сообщение
Есть какая-нибудь книжка или читабльный man, рассказывают, что делается между зпуском программы и вызовом функции main?
Маловероятно. Проще всего скачать исходники glibc и смотреть там. Стартовая функция называется _start
1
Mirmik
techpriest
631 / 210 / 57
Регистрация: 27.02.2014
Сообщений: 1,153
14.06.2016, 06:36  [ТС] 3
Меня больше интересует релокация дата секции... Функции вроде _do_copy_data, и то как в линк скриптеоно отражается (не знаю, может на x86 её и нету вовсе.... И последующая инициализация конструкторов... Вот такие вещи.

Добавлено через 3 минуты
Стартовая функция, кстати, не всегда называется _start
0
Evg
Эксперт CАвтор FAQ
20409 / 7931 / 613
Регистрация: 30.03.2009
Сообщений: 22,085
Записей в блоге: 30
14.06.2016, 08:34 4
Цитата Сообщение от Mirmik Посмотреть сообщение
И последующая инициализация конструкторов
Как использовать раздел .init_array?

Всё начинается с функции с именем _init, расположенной в специальной секции .init. В модуле crti.o находится начало функции, в модуле crtn.o находится конец функции, а середина функции находится в других модулях и собирается из огрызков секций .init в этих самых модулях. Линкерный скрипт тут в общем-то не при чём. Главное - в линкер в правильном порядке подать набор файлов, в которых есть секция .init, и по общим правилам из всех кусков этой секции склеится общая секция в исполняемом файле, которая в конечном итоге превратится в полное тело функции _init
0
14.06.2016, 08:34
Mirmik
techpriest
631 / 210 / 57
Регистрация: 27.02.2014
Сообщений: 1,153
14.06.2016, 08:39  [ТС] 5
Да... И вот я и хочу всё это подробно...
0
Evg
Эксперт CАвтор FAQ
20409 / 7931 / 613
Регистрация: 30.03.2009
Сообщений: 22,085
Записей в блоге: 30
14.06.2016, 08:51 6
Кроме как докопаться самому, тут вариантов нет. В книгах об этом не пишут. Я бы мог об этом рассказать, но писать надо много. Могу попробовать моделирующий пример сделать, но надо с интеловской системой команд и программными соглашениями ковыряться, я их не знаю
0
avgoor
1065 / 619 / 158
Регистрация: 05.12.2015
Сообщений: 1,781
14.06.2016, 13:41 7
Цитата Сообщение от Mirmik Посмотреть сообщение
Да... И вот я и хочу всё это подробно...
Нагуглите описание формата исполняемых файлов (для windows - pe для linux - elf). Там, если разобраться в самом формате, становится понятно что и когда происходит.
0
Убежденный
Ушел с форума
Эксперт С++
16247 / 7313 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
14.06.2016, 14:05 8
В Windows запуск процесса более-менее детально разобран в книге
"Внутреннее устройство Microsoft Windows" (Windows Internals).
Еще много интересного можно узнать, разбирая документацию по
формату PE и исходники NT4/W2K/WRK...
0
Evg
Эксперт CАвтор FAQ
20409 / 7931 / 613
Регистрация: 30.03.2009
Сообщений: 22,085
Записей в блоге: 30
14.06.2016, 15:30 9
Букв получилось много, поэтому закинул в блог http://www.cyberforum.ru/blogs/18334/blog4289.html
4
14.06.2016, 15:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2016, 15:30

startup.c
Вместо нигического ассемблерного stortup.s можно использовать эквивалентный сишный stortup.c. Вот...

MFC StartUP
#include <afxwin.h>// library of MFC standart #include "afxext.h" #include "CMyButton.h" //...

Этапы STARTUP
При startup выводятся следующие сообщения: 1) экземпляр запущен 2) БД открыта 3) БД...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.