~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ E4805792C3A7D35963BE9E875FF5C4FA__1714598820 ✰
Заголовок документа оригинал.:
✰ Intermediate representation - Wikipedia ✰
Заголовок документа перевод.:
✰ Промежуточное представительство — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Intermediate_language ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/e4/fa/e4805792c3a7d35963be9e875ff5c4fa.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/e4/fa/e4805792c3a7d35963be9e875ff5c4fa__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 07:15:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 2 May 2024, at 00:27 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Промежуточное представительство — Википедия Jump to content

Промежуточное представительство

Из Википедии, бесплатной энциклопедии
(Перенаправлено с языка среднего уровня )

Промежуточное представление ( IR ) — это структура данных или код, используемый внутри компилятора или виртуальной машины для представления исходного кода . IR предназначен для дальнейшей обработки, такой как оптимизация и перевод . [1] «Хороший» IR должен быть точным – способным представлять исходный код без потери информации. [2] – и независимо от какого-либо конкретного исходного или целевого языка. [1] IR может принимать одну из нескольких форм: структуру данных в памяти или специальный кортежа или стека на основе код , читаемый программой. [3] В последнем случае его еще называют промежуточным языком .

Канонический пример можно найти в большинстве современных компиляторов. Например, интерпретатор CPython преобразует линейный удобочитаемый текст, представляющий программу, в промежуточную структуру графа , которая позволяет анализировать поток и переупорядочивать его перед выполнением. Использование такого промежуточного представления позволяет системы компиляторов, такие как GNU Compiler Collection и LLVM, использовать на многих различных исходных языках для генерации кода для множества различных целевых архитектур .

Средний язык [ править ]

Промежуточный язык — это язык абстрактной машины , предназначенный для помощи в анализе компьютерных программ . Этот термин происходит от их использования в компиляторах , где исходный код программы переводится в форму, более подходящую для преобразований, улучшающих код, прежде чем использоваться для генерации объектного или машинного кода для целевой машины. Конструкция промежуточного языка обычно отличается от конструкции практического машинного языка тремя фундаментальными способами:

Популярным форматом промежуточных языков является трехадресный код .

Этот термин также используется для обозначения языков, используемых в качестве промежуточных звеньев в некоторых языках программирования высокого уровня, которые сами не выводят объектный или машинный код, а выводят только промежуточный язык. Этот промежуточный язык передается компилятору такого языка, который затем выводит готовый объектный или машинный код. Обычно это делается для облегчения процесса оптимизации или повышения переносимости за счет использования промежуточного языка, имеющего компиляторы для многих процессоров и операционных систем , таких C. как Языки, используемые для этого, по сложности делятся на языки высокого уровня и языки низкого уровня , такие как ассемблер .

Языки [ править ]

Несмотря на то, что C явно не был задуман как промежуточный язык, природа C как абстракции ассемблера и его повсеместное распространение в качестве де-факто системного языка в Unix-подобных и других операционных системах сделали его популярным промежуточным языком: Eiffel , Sather , Esterel , некоторые диалекты Lisp . ( Lush , Gambit ), Squeak 's Smalltalk-subset Slang, Nim , Cython , Seed7 , SystemTap , Vala , V и другие используют C в качестве промежуточного языка Варианты C были разработаны для обеспечения функций C как переносимого языка ассемблера , включая C-- и язык C. промежуточный

Любой язык, предназначенный для виртуальной машины или машины с p-кодом, можно считать промежуточным языком:

Коллекция компиляторов GNU (GCC) использует внутри себя несколько промежуточных языков для упрощения переносимости и кросс-компиляции . Среди этих языков есть

GCC поддерживает создание этих IR в качестве конечной цели:

Структура компилятора LLVM основана на промежуточном языке LLVM IR , компактное двоичное сериализованное представление которого также называется «битовым кодом» и было разработано Apple. [4] [5] Как и байт-код GIMPLE, биткод LLVM полезен для оптимизации времени соединения. Как и GCC, LLVM также нацелен на некоторые IR, предназначенные для прямого распространения, включая Google PNaCl IR и SPIR . Дальнейшим развитием LLVM является использование многоуровневого промежуточного представления ( MLIR ) с возможностью генерирования кода для различных гетерогенных целей и объединения результатов разных компиляторов. [6]

Промежуточный язык ILOC [7] используется на занятиях по проектированию компиляторов как простой целевой язык. [8]

Другое [ править ]

Инструменты статического анализа часто используют промежуточное представление. Например, Radare2 — это набор инструментов для анализа и обратного проектирования двоичных файлов. Он использует промежуточные языки ESIL. [9] и РЕЙЛ [10] для анализа бинарных файлов.

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Уокер, Дэвид. «CS320: Компиляторы: промежуточное представление» (слайды лекции) . Проверено 12 февраля 2016 г.
  2. ^ Чоу, Фред (22 ноября 2013 г.). «Проблема межъязыковой совместимости» . Очередь АКМ . 11 (10) . Проверено 12 февраля 2016 г.
  3. ^ Тоал, Рэй. «Промежуточные представления» . Проверено 12 февраля 2016 г.
  4. ^ «Биткод (iOS, watchOS)» . Хакерские новости. 10 июня 2015 г. Проверено 17 июня 2015 г.
  5. ^ «Формат файла битового кода LLVM» . llvm.org . Проверено 17 июня 2015 г.
  6. ^ «МЛИР» .
  7. ^ "Симулятор ILOC". Архивировано 7 мая 2009 г. в Wayback Machine. У.А.Барретт, 2007 г., перефразируя Кита Купера и Линду Торчон, «Разработка компилятора», Морган Кауфманн , 2004 г. ISBN   1-55860-698-X .
  8. ^ "Дизайн компилятора CISC 471" Ули Кремера
  9. ^ Участники Radare2. «ЕСИЛ» . Проект Радаре2. Архивировано из оригинала 18 августа 2015 года . Проверено 17 июня 2015 г.
  10. ^ Себастьян Порст (7 марта 2010 г.). «Язык REIL – Часть I» . zynamics.com . Проверено 17 июня 2015 г.

Внешние ссылки [ править ]

  • Стэнфордская группа SUIF
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: E4805792C3A7D35963BE9E875FF5C4FA__1714598820
URL1:https://en.wikipedia.org/wiki/Intermediate_language
Заголовок, (Title) документа по адресу, URL1:
Intermediate representation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)