Процесс компиляции программ — презентация
logo
Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
  • Процесс компиляции программ
1/9

Первый слайд презентации

Процесс компиляции программ.

Изображение слайда

Слайд 2

Исходный C++ файл  — это всего лишь текст, и его невозможно запустить как программу или использовать как библиотеку. Поэтому каждый исходный файл (то что печатает программист) требуется скомпилировать в исполняемый файл (то, с чем может работать компьютер), динамическую или статическую библиотеки. Исходный код Исправленный код Ассемблерный код Набор объектных файлов Процессинг Ассемблирование Компиляция Компоновка Исполняемый файл 1 2 4 5 3 Загрузка Программа запущена 6

Изображение слайда

Слайд 3

1) Процессинг (выполняется препроцессором/ макропроцессором) - преобразовывает вашу программу для дальнейшего компилирования. На данной стадии происходит работа с препроцессорными директивами. Например, вместо хэдеров ( #include ) добавляются листы кода, из указанных файлов библиотек. Убираются комментарии. Макросы # define, которые, по сути, являются автозаменой - заменяются во всех участках кода их реальными значениями, выбирает нужные куски кода в соответствии с условиями  # if,  # ifdef  и  # ifndef.

Изображение слайда

Слайд 4

Ассемблерный код  — это код на языке низкого уровня (понятный и человеку и компьютеру). Ассемблер, хоть и является одним из сложнейших языков программирования – является самым быстродейственным, так как пишется уже на языке, понятном для машины. 2. Этап Ассемблирование – ассемблирование – это перевод кода с любого языка программирования в ассемблерный код. Эта процедура не является обязательным процессом обработки файлов на языке C++ (поэтому с++ и работает быстрее).

Изображение слайда

Слайд 5

3. Компилирование  — процесс превращения текстов на языке Ассемблера в объектные файлы. Это файлы состоящие из кодов целевого процессора (процессора компьютера), но в которых еще не проставлены адреса объектов, находящихся в других объектных файлах или библиотеках. Проще говоря, после компилирования мы имеем много листов бинарного кода (нули и единицы), но пока не знаем куда их подставить, и в каком порядке, чтобы всё заработало.

Изображение слайда

Слайд 6

Объектный файл  — это созданный компилятором промежуточный файл, хранящий часть машинного кода. Одна программа разделяется на несколько таких частей – объектных файлов. Далее возможно сохранение данного объектного кода в  статические библиотеки  для того, чтобы не компилировать данный код снова.

Изображение слайда

Слайд 7

4) Компоновка или по-другому Линковка Компоновщик (линкер)  связывает все объектные файлы и статические библиотеки в единый исполняемый файл, который мы и сможем запустить в дальнейшем (.exe -файл). Связка происходит при помощи таблиц символов, которую компоновщик создаёт.

Изображение слайда

Слайд 8

Таблица символов  — по сути, это большой массив, огромная камера хранения, создаваемая компилятором и хранящаяся в самих объектных файлах (которые были созданы на предыдущем этапе). Таблица символов содержит имена переменных, функций, классов, объектов, короче всего, что было создано в программе. И каждому идентификатору (символу) соотносится его тип, область видимости. Также таблица символов хранит адреса ссылок на данные и процедуры в других объектных файлах. То есть, с помощью этой таблицы объектные файлы, могут обмениваться данными между собой. Именно с помощью таблицы Линкер сможет объединить все объектные файлы в один исполняемый.

Изображение слайда

Последний слайд презентации: Процесс компиляции программ

5) Загрузка Последний этап, который предстоит пройти нашей программе — вызвать загрузчик для загрузки нашей программы в память. Дело в том, что код на компьютере выполняется постоянно, выполняются фоновые программы, в том числе – код операционной системы ( windows ). И чтобы добавить новую программу в этот бесконечный поток кода – нужно определить в какое место системы её можно встроить, чтобы потом безопасно удалить, не повредив ход работы всех остальных программ. На данной стадии также возможна подгрузка   динамических библиотек.

Изображение слайда

Похожие презентации

Ничего не найдено