Vtome.ru - электронная библиотека

Оптимизирующие компиляторы. Структура и алгоритмы

  • Добавил: literator
  • Дата: 16-12-2024, 21:15
  • Комментариев: 0
Название: Оптимизирующие компиляторы. Структура и алгоритмы
Автор: Константин Владимиров
Издательство: АСТ
Год: 2024
Страниц: 274
Язык: русский
Формат: pdf, epub
Размер: 10.1 MB

«Оптимизирующие компиляторы» – настольная книга специалиста, который решил не просто укрепить свои знания, но и вывести навыки на новый уровень.

Вместе с Константином Владимировым вы разберете теорию оптимизирующей компиляции – все те сложные преобразования, которые происходят с текстом программы на его пути к исполняемому файлу, узнаете, что такое тулчейны и каким этапам трансформации подвергается программа до того, как будет впервые запущена, а также закрепите полученные знания, выполняя задания.

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

Компилятор, в узком смысле, это одна из программ, вызываемых драйвером компиляции. Эта программа переводит код других программ с высокоуровневого языка на низкоуровневый, то есть делает их оптимизирующую трансляцию. Далее, когда я буду говорить о компиляторе как о программе, я буду иметь в виду именно «компилятор в узком смысле».

На самом деле даже в узком смысле компилятор — это слишком широкая тема, которую будет сложно описать в рамках одной книги. Отмечу сразу, в этой работе мы не будем касаться динамической (just in time, JIT) компиляции, бинарной трансляции и всего, что с ними связано. JIT-компиляторы — это, несомненно, тоже компиляторы в узком смысле. Но речь дальше пойдет исключительно про статические компиляторы. Многие из тех алгоритмов, которые будут рассмотрены ниже, вполне применимы и используются в системах динамической компиляции, но там есть сложные детали и нюансы, которые мне хотелось бы опустить. Будем считать, что здесь и далее я буду иметь в виду исключительно статический компилятор и исключительно такой, который в итоге осуществляет трансляцию с языка программирования общего назначения в язык ассемблера целевой архитектуры.

Автор имеет определённые языковые предпочтения: много лет используя и преподавая языки C и C++ (и разрабатывая компиляторы в основном на них и для них), я к ним в некотором роде привык. Поэтому, когда говорю о «каком-то» языке программирования, не уточняя, что это за язык, обычно я имею в виду что-то вроде C или C++: что-то статически типизированное, что-то компилируемое, что-то с явным управлением ресурсами, включая память и т.д. Тот язык псевдокода, на котором я буду описывать компиляторные алгоритмы, также будет подозрительно похож на современный высокоуровневый C++ (без некоторых технических деталей, выкинутых для краткости). Надеюсь, он окажется для читателя интуитивно понятен.

Скачать Оптимизирующие компиляторы. Структура и алгоритмы



ОТСУТСТВУЕТ ССЫЛКА/ НЕ РАБОЧАЯ ССЫЛКА ЕСТЬ РЕШЕНИЕ, ПИШИМ СЮДА!










ПРАВООБЛАДАТЕЛЯМ


СООБЩИТЬ ОБ ОШИБКЕ ИЛИ НЕ РАБОЧЕЙ ССЫЛКЕ



Внимание
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.