~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 21F91215ECDE2158AE6C02EF51AB8209__1710800280 ✰
Заголовок документа оригинал.:
✰ LLVM - Wikipedia ✰
Заголовок документа перевод.:
✰ ЛЛВМ — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/LLVM ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/21/09/21f91215ecde2158ae6c02ef51ab8209.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/21/09/21f91215ecde2158ae6c02ef51ab8209__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 00:44:59 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 19 March 2024, at 01:18 (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

ЛЛВМ

Из Википедии, бесплатной энциклопедии
ЛЛВМ
Оригинальный автор(ы) Крис Лэттнер , Викрам Адв
Разработчики) Группа разработчиков LLVM
Начальная версия 2003 год ; 21 год назад ( 2003 )
Стабильная версия
18.1.7 [2]  Отредактируйте это в Викиданных / 5 июня 2024 г.
Репозиторий
Написано в С++
Операционная система Кросс-платформенный
Тип Компилятор
Лицензия UIUC ( в стиле BSD )
Лицензия Apache 2.0 с исключениями LLVM (версия 9.0.0 или новее) [3]
Веб-сайт www .llvm .org

LLVM — это набор компилятора и инструментальной цепочки. технологий [4] который можно использовать для разработки внешнего интерфейса для любого языка программирования и внутреннего интерфейса для любой архитектуры набора команд . LLVM разработан на основе независимого от языка промежуточного представления (IR), которое служит переносимым высокого уровня языком ассемблера , который можно оптимизировать с помощью различных преобразований за несколько проходов. [5] Название LLVM первоначально означало виртуальную машину низкого уровня, однако проект расширился, и официально это имя больше не является инициализмом .

LLVM написан на C++ и предназначен для оптимизации во время компиляции , компоновки , выполнения и во время простоя. Первоначально реализованный для C и C++, независимый от языка дизайн LLVM с тех пор породил большое количество интерфейсов: языки с компиляторами, которые используют LLVM (или которые не используют LLVM напрямую, но могут генерировать скомпилированные программы как LLVM IR), включают ActionScript , Ada. , C# для .NET , [6] [7] [8] Common Lisp , PicoLisp , Crystal , CUDA , D , Delphi , Дилан , Форт , [9] Fortran , FreeBASIC , Free Pascal , Halide , Haskell , байт-код Java , Julia , Kotlin , , язык G LabVIEW [10] [11] Lua , Objective-C , OpenCL , [12] PostgreSQL SQL и PLpgSQL, [13] Рубин , [14] Ржавчина , [15] Скала , [16] [17] Свифт , Ходзё и Зиг .

История [ править ]

Проект LLVM стартовал в 2000 году в Университете Иллинойса в Урбане-Шампейне под руководством Викрама Адве и Криса Латтнера . LLVM изначально разрабатывался как исследовательская инфраструктура для изучения методов динамической компиляции статических и динамических языков программирования. LLVM был выпущен под лицензией открытого исходного кода Университета Иллинойса/NCSA . [3] обеспечения разрешительная лицензия свободного программного . В 2005 году компания Apple Inc. наняла Латтнера и сформировала команду для работы над системой LLVM для различных применений в системах разработки Apple. [18] LLVM является неотъемлемой частью инструментов разработки Apple Xcode для macOS и iOS, начиная с Xcode 4 в 2011 году. [19]

В 2006 году Латтнер приступил к работе над новым проектом под названием Clang . Комбинация внешнего интерфейса Clang и внутреннего интерфейса LLVM называется Clang/LLVM или просто Clang.

Название LLVM изначально было инициализмом для виртуальной машины низкого уровня . Однако проект LLVM превратился в зонтичный проект, который имеет мало общего с тем, что большинство нынешних разработчиков называют виртуальной машиной . Это сделало инициализм «сбивающим с толку» и «неуместным», а с 2011 года LLVM «официально больше не является аббревиатурой». [20] но бренд, который относится к зонтичному проекту LLVM. [21] Проект включает в себя промежуточное представление LLVM LLVM (IR), отладчик , реализацию LLVM стандартной библиотеки C++ (с полной поддержкой C++11 и C++14). [22] ) и т. д. LLVM находится в ведении Фонда LLVM. Инженер-компилятор Таня Латтнер стала его президентом в 2014 году. [23] и занимал эту должность по состоянию на март 2024 г. . [24]

«За разработку и внедрение LLVM» Ассоциация вычислительной техники вручила Викраму Адве, Крису Латтнеру и Эвану Ченгу 2012 премию ACM Software System Award . [25]

Изначально проект был доступен по лицензии UIUC . После выхода версии 9.0.0 в 2019 году [26] LLVM заменена лицензией Apache 2.0 с исключениями LLVM. [3] По состоянию на ноябрь 2022 г. около 400 взносов не получили повторной лицензии. [27] [28]

Особенности [ править ]

LLVM может обеспечить средние уровни полной системы компилятора, принимая код промежуточного представления (IR) от компилятора и создавая оптимизированный IR. Затем этот новый IR можно преобразовать и связать с машинно-зависимым кодом ассемблера для целевой платформы. LLVM может принимать IR из GNU Compiler Collection (GCC) инструментальной цепочки , что позволяет использовать его с широким спектром существующих интерфейсов компилятора, написанных для этого проекта. LLVM также можно собрать с помощью gcc после версии 7.5. [29]

LLVM также может генерировать перемещаемый машинный код во время компиляции или компоновки или даже двоичный машинный код во время выполнения.

LLVM поддерживает независимый от языка набор команд и систему типов . [5] Каждая инструкция имеет статическую форму однократного назначения (SSA), что означает, что каждая переменная (называемая типизированным регистром) назначается один раз, а затем фиксируется. Это помогает упростить анализ зависимостей между переменными. LLVM позволяет компилировать код статически, как это происходит в традиционной системе GCC, или оставлять его для поздней компиляции из IR в машинный код посредством JIT- компиляции , аналогично Java . Система типов состоит из базовых типов, таких как целые числа или числа с плавающей запятой , и пяти производных типов : указателей , массивов , векторов , структур и функций . Конструкцию типа на конкретном языке можно представить путем объединения этих базовых типов в LLVM. Например, класс в C++ может быть представлен смесью структур, функций и массивов указателей на функции .

JIT-компилятор LLVM может оптимизировать ненужные статические ветки программы во время выполнения и, таким образом, полезен для частичной оценки в тех случаях, когда программа имеет много опций, большинство из которых можно легко определить как ненужные в конкретной среде. Эта функция используется в OpenGL конвейере Mac OS X Leopard (v10.5) для обеспечения поддержки недостающих аппаратных функций. [30]

Графический код в стеке OpenGL можно оставить в промежуточном представлении, а затем скомпилировать при запуске на целевой машине. В системах с высокопроизводительными графическими процессорами (GPU) результирующий код остается довольно тонким, передавая инструкции графическому процессору с минимальными изменениями. В системах с графическими процессорами низкого уровня LLVM компилирует дополнительные процедуры, выполняемые на локальном центральном процессоре (ЦП), которые эмулируют инструкции, которые графический процессор не может выполнять внутри себя. LLVM улучшил производительность на машинах начального уровня с использованием чипсетов Intel GMA . Похожая система была разработана в рамках Gallium3D LLVMpipe и включена в оболочку GNOME , чтобы позволить ей работать без загрузки надлежащего драйвера 3D-оборудования. [31]

В 2011 году программы, составленные GCC, превзошли программы LLVM в среднем на 10%. [32] [33] В 2013 году компания phoronix сообщила, что LLVM догнала GCC, скомпилировав двоичные файлы примерно равной производительности. [34]

Компоненты [ править ]

LLVM стал зонтичным проектом, состоящим из нескольких компонентов.

Интерфейсы [ править ]

LLVM изначально был написан как замена существующему генератору кода в стеке GCC. [35] и многие интерфейсы GCC были модифицированы для работы с ним, в результате чего появился ныне несуществующий пакет LLVM-GCC. Модификации обычно включают в себя этап IR из GIMPLE в LLVM, чтобы можно было использовать оптимизаторы и генератор кода LLVM вместо системы GIMPLE GCC. Apple была активным пользователем LLVM-GCC до Xcode 4.x (2013). [36] [37] Такое использование интерфейса GCC считалось в основном временной мерой, но с появлением Clang и преимуществами LLVM и современной модульной кодовой базы Clang (а также скоростью компиляции) оно по большей части устарело.

ЛЛВМ в настоящее время [ на момент? ] поддерживает компиляцию Ada , C , C++ , D , Delphi , Fortran , Haskell , Julia , Objective-C , Rust и Swift с использованием различных интерфейсов .

Широкий интерес к LLVM привел к нескольким попыткам разработать новые интерфейсы для многих языков. Наибольшее внимание привлек Clang, новый компилятор, поддерживающий C, C++ и Objective-C. Clang, поддерживаемый в первую очередь Apple, нацелен на замену компилятора C/Objective-C в системе GCC системой, которая легче интегрируется с интегрированными средами разработки (IDE) и имеет более широкую поддержку многопоточности . Поддержка директив OpenMP включена в Clang начиная с версии 3.8. [38]

Компилятор Utrecht Haskell может генерировать код для LLVM. Хотя генератор находился на ранней стадии разработки, во многих случаях он был более эффективен, чем генератор кода C. [39] ( GHC Бэкэнд Glasgow Haskell Compiler ) использует LLVM и обеспечивает ускорение скомпилированного кода на 30% по сравнению с компиляцией собственного кода с помощью GHC или генерации кода C с последующей компиляцией, при этом отсутствует только один из многих методов оптимизации, реализованных GHC. [40]

Многие другие компоненты находятся на различных стадиях разработки, включая, помимо прочего, компилятор Rust , интерфейс байт-кода Java , интерфейс Common Intermediate Language (CIL), MacRuby реализацию Ruby 1.9 на , различные интерфейсы для Standard ML и новый распределитель регистров раскраски графов . [ нужна цитата ]

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

LLVM IR используется, например, radeonsi и llvmpipe. Оба являются частью Mesa 3D .

Ядром LLVM является промежуточное представление (IR), язык программирования низкого уровня, похожий на ассемблер. IR — это строго типизированный набор команд компьютера с сокращенным набором команд (RISC), который абстрагирует большую часть деталей цели. Например, соглашение о вызовах абстрагируется через call и retинструкции с явными аргументами. Кроме того, вместо фиксированного набора регистров IR использует бесконечный набор временных регистров формы %0, %1 и т. д. LLVM поддерживает три эквивалентные формы IR: удобочитаемый формат ассемблера, [41] формат в памяти, подходящий для внешних интерфейсов, и плотный формат битового кода для сериализации. Простое «Привет, мир!» программа в формате IR:

@.str   =   внутренняя   константа   [  14   x   i8  ]   c  «Hello, world\0A\00» 

 объявляет   i32   @printf  (  ptr  ,   ...) 

 определяет   i32   @main  (  i32   %argc  ,   ptr   %argv  )   nounwind   { 
 запись: 
     % tmp1   =   getelementptr   [  14   x   i8  ],   ptr   @.str  ,   i32   0  ,   i32   0 
     %tmp2   =   вызов   i32   (  ptr  ,   ...)   @printf  (   ptr   %tmp1   )   nounwind 
     ret   i32   0 
 } 

Множество различных используемых соглашений и функций, предоставляемых разными целями, означают, что LLVM не может по-настоящему создать независимый от цели IR и перенацелить его, не нарушая некоторых установленных правил. Примеры целевой зависимости помимо того, что явно упомянуто в документации, можно найти в предложении 2011 года по «слововому коду», полностью независимому от цели варианту LLVM IR, предназначенному для распространения в Интернете. [42] Более практичный пример — PNaCl . [43]

Проект LLVM также представляет другой тип промежуточного представления, названный MLIR. [44] который помогает создавать повторно используемую и расширяемую инфраструктуру компилятора за счет использования архитектуры плагинов под названием Dialect. [45] Это позволяет использовать информацию более высокого уровня о структуре программы в процессе оптимизации, включая полиэдральную компиляцию .

Бэкэнды [ править ]

В версии 16 LLVM поддерживает множество наборов инструкций , включая IA-32 , x86-64 , ARM , Qualcomm Hexagon , LoongArch , M68K , MIPS , NVIDIA Parallel Thread Execution (PTX, также называется NVPTX в документации LLVM ), PowerPC , AMD TeraScale , [46] большинство AMD последних графических процессоров (также называемых AMDGPU в документации LLVM), [47] SPARC , z/Architecture (также называемый SystemZ в документации LLVM) и XCore .

Некоторые функции недоступны на некоторых платформах. Большинство функций присутствует для IA-32, x86-64, z/Architecture, ARM и PowerPC. [48] RISC-V поддерживается начиная с версии 7.

В прошлом LLVM также полностью или частично поддерживал другие бэкенды, включая бэкэнд C, Cell SPU , mblaze (MicroBlaze) , [49] AMD R600, DEC/Compaq Альфа ( Альфа AXP ) [50] и Ниос2 , [51] но это оборудование по большей части устарело, и разработчики LLVM решили, что затраты на поддержку и обслуживание больше не оправданы. [ нужна цитата ]

LLVM также поддерживает WebAssembly в качестве цели, позволяя скомпилированным программам выполняться в средах с поддержкой WebAssembly, таких как Google Chrome / Chromium , Firefox , Microsoft Edge , Apple Safari или WAVM . Компиляторы WebAssembly, совместимые с LLVM, обычно поддерживают в основном немодифицированный исходный код, написанный на C, C++, D, Rust, Nim, Kotlin и некоторых других языках.

Подпроект машинного кода LLVM (MC) — это платформа LLVM для перевода машинных инструкций между текстовыми формами и машинным кодом. Раньше LLVM полагалась на системный ассемблер или на инструментальную цепочку для перевода ассемблера в машинный код. Встроенный ассемблер LLVM MC поддерживает большинство целей LLVM, включая IA-32, x86-64, ARM и ARM64. Для некоторых целей, включая различные наборы инструкций MIPS, можно использовать встроенную поддержку ассемблера, но она все еще находится на стадии бета-тестирования. [ нужна цитата ]

Линкер [ править ]

Подпроект lld — это попытка разработать встроенный, независимый от платформы компоновщик для LLVM. [52] lld стремится устранить зависимость от стороннего компоновщика. По состоянию на май 2017 г. , lld поддерживает ELF , PE/COFF , Mach-O и WebAssembly. [53] в порядке убывания полноты. lld работает быстрее, чем обе версии GNU ld . [ нужна цитата ]

В отличие от компоновщиков GNU, lld имеет встроенную поддержку оптимизации времени компоновки (LTO). Это позволяет ускорить генерацию кода, минуя использование плагина компоновщика, но, с другой стороны, запрещает взаимодействие с другими разновидностями LTO. [54]

Стандартная библиотека C++ [ править ]

Проект LLVM включает реализацию стандартной библиотеки C++ под названием libc++, имеющую двойную лицензию: лицензию MIT и лицензию UIUC . [55]

Начиная с версии 9.0.0, лицензия была заменена на лицензию Apache 2.0 с исключениями LLVM. [3]

Полли [ править ]

Это реализует набор оптимизаций локальности кэша, а также автопараллелизм и векторизацию с использованием многогранной модели . [56]

Отладчик [ править ]

Стандартная библиотека C [ править ]

llvm-libc — это неполная, готовящаяся к выпуску независимая от ABI стандартная библиотека C, разработанная проектом LLVM и для него. [57]

Производные [ править ]

Благодаря разрешительной лицензии многие поставщики выпускают собственные версии LLVM. Это официально признано в документации LLVM, которая по этой причине не рекомендует использовать номера версий при проверке функций. [58] Некоторые из поставщиков включают в себя:

  • компании AMD Оптимизирующий компилятор C/C++ основан на LLVM, Clang и Flang.
  • Apple поддерживает форк Xcode с открытым исходным кодом . [59]
  • Arm предоставляет ряд наборов инструментов на основе LLVM, в том числе Arm Compiler for Embedded, предназначенный для разработки на «голом железе», и Arm Compiler для Linux, ориентированный на рынок высокопроизводительных вычислений.
  • Flang , проект Fortran в разработке по состоянию на 2022 год.
  • IBM использует LLVM в своих C/C++ и Fortran . компиляторах [60]
  • Intel внедрила LLVM в свой компилятор Intel C++ следующего поколения . [61]
  • Национальная лаборатория Лос-Аламоса имеет ответвление LLVM 8 для параллельных вычислений под названием «Кицунэ». [62]
  • Nvidia использует LLVM в реализации своего компилятора NVVM CUDA . [63] Компилятор NVVM отличается от серверной части NVPTX, упомянутой в разделе «Бэкэнды » , хотя оба они генерируют код PTX для графических процессоров Nvidia.
  • С 2013 года Sony использует основной интерфейсный компилятор Clang LLVM в комплекте разработки программного обеспечения (SDK) своей PlayStation 4 . консоли [64]

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

Литература [ править ]

  • Крис Лэттнер - Архитектура приложений с открытым исходным кодом - Глава 11 LLVM , ISBN   978-1257638017 , выпущен в 2012 году под лицензией CC BY 3.0 ( Открытый доступ ). [65]
  • LLVM: Структура компиляции для анализа и трансформации программ на протяжении всей жизни , опубликованная статья Криса Латтнера и Викрама Адве.

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

  1. ^ «Логотип ЛЛВМ» . Проект инфраструктуры компилятора LLVM .
  2. ^ «ЛЛВМ 18.1.7» . 5 июня 2024 г. . Проверено 5 июня 2024 г.
  3. ^ Перейти обратно: а б с д «ЛИЦЕНЗИЯ.TXT» . llvm.org . Проверено 24 сентября 2019 г.
  4. ^ «Проект инфраструктуры компилятора LLVM» . Проверено 11 марта 2016 г.
  5. ^ Перейти обратно: а б «Справочное руководство по языку LLVM» . Проверено 9 июня 2019 г.
  6. ^ «Анонсируем LLILC — новый компилятор на основе LLVM для .NET» . dotnetfoundation.org . Архивировано из оригинала 12 декабря 2021 года . Проверено 12 сентября 2020 г.
  7. ^ «Моно ЛЛВМ» . Проверено 10 марта 2013 г.
  8. ^ Латтнер, Крис (2011). «ЛЛВМ» . В Брауне, Эми; Уилсон, Грег (ред.). Архитектура приложений с открытым исходным кодом .
  9. ^ «МовФорт» . Гитхаб . 28 ноября 2021 г.
  10. ^ Уильям Вонг (23 мая 2017 г.). «В чем разница между LabVIEW 2017 и LabVIEW NXG?» . Электронный дизайн .
  11. ^ «Компилятор NI LabVIEW: под капотом» .
  12. ^ Ларабель, Майкл (11 апреля 2018 г.). «Khronos официально объявляет о своем переводчике LLVM/SPIR-V» . Фороникс.com .
  13. ^ «32.1. Что такое JIT-компиляция?» . Документация PostgreSQL . 12 ноября 2020 г. . Проверено 25 января 2021 г.
  14. ^ "Функции" . Рубидвижение . ООО «Скретчворк Девелопмент» . Проверено 17 июня 2017 г. RubyMotion преобразует исходный код Ruby вашего проекта в ... машинный код с помощью [n] ... опережающего компилятора (AOT), основанного на LLVM.
  15. ^ «Генерация кода — Руководство по разработке Rustc» . www.rust-lang.org . Проверено 4 января 2023 г.
  16. ^ Риди, Джефф (24 сентября 2012 г.). «Компиляция Scala в LLVM» . Сент-Луис, Миссури, США . Проверено 19 февраля 2013 г.
  17. ^ «Скала Натив» . Проверено 26 ноября 2023 г.
  18. ^ Адам Трит (19 февраля 2005 г.), mkspecs и исправления для LLVM-компиляции Qt4 , заархивировано из оригинала 4 октября 2011 г. , получено 27 января 2012 г.
  19. ^ «Обзор инструментов разработчика» . Разработчик Apple . Яблоко. Архивировано из оригинала 23 апреля 2011 года.
  20. ^ Латтнер, Крис (21 декабря 2011 г.). «Имя LLVM» . llvm-dev (список рассылки) . Проверено 2 марта 2016 г. «LLVM» официально больше не является аббревиатурой. Аббревиатура, которую он когда-то расширил, тоже сбивала с толку и была неуместна почти с самого первого дня. :) По мере того, как LLVM разросся и включил в себя другие подпроекты, он стал еще менее полезным и бессмысленным.
  21. ^ Латтнер, Крис (1 июня 2011 г.). «ЛЛВМ» . В Брауне, Эми; Уилсон, Грег (ред.). Архитектура приложений с открытым исходным кодом . Лулу.com. ISBN  978-1257638017 . Название «LLVM» когда-то было аббревиатурой, но сейчас это просто бренд зонтичного проекта.
  22. ^ " "libc++" Стандартная библиотека C++" .
  23. ^ Латтнер, Крис (3 апреля 2014 г.). «Фонд LLVM» . Блог проекта LLVM .
  24. ^ "Совет директоров" . Фонд ЛЛВМ . Проверено 19 марта 2024 г.
  25. ^ «Премия ACM Software System» . АКМ.
  26. ^ Веннборг, Ганс (19 сентября 2019 г.). «[llvm-announce] Релиз LLVM 9.0.0» .
  27. ^ «Перелицензирование длинного хвоста» . Foundation.llvm.org . 11 ноября 2022 г.
  28. ^ «Перелицензирование LLVM — длинный хвост» . Проект ЛЛВМ . Получено 27 ноября 2022 г. - через Документы Google.
  29. ^ «⚙ D156286 [документы] Увеличьте минимальную версию GCC до 7,5» . Reviews.llvm.org . Проверено 28 июля 2023 г.
  30. ^ Латтнер, Крис (15 августа 2006 г.). «Крутое использование LLVM в Apple: стек OpenGL» . llvm-dev (список рассылки) . Проверено 1 марта 2016 г.
  31. ^ Майкл Ларабель, «Оболочка GNOME работает без поддержки драйвера графического процессора» , phoronix , 6 ноября 2011 г.
  32. ^ Макаров В. "SPEC2000: Сравнение LLVM-2.9 и GCC4.6.1 на x86" . Проверено 3 октября 2011 г.
  33. ^ Макаров В. «SPEC2000: Сравнение LLVM-2.9 и GCC4.6.1 на x86_64» . Проверено 3 октября 2011 г.
  34. ^ Ларабель, Майкл (27 декабря 2012 г.). «Компилятор LLVM/Clang 3.2, конкурирующий с GCC» . Проверено 31 марта 2013 г.
  35. ^ Латтнер, Крис ; Адве, Викрам (май 2003 г.). Архитектура GCC следующего поколения . Первый ежегодный саммит разработчиков GCC . Проверено 6 сентября 2009 г.
  36. ^ «Обзор компилятора LLVM» . разработчик.apple.com .
  37. ^ «Примечания к выпуску Xcode 5» . Apple Inc.
  38. ^ «Примечания к выпуску Clang 3.8» . Проверено 24 августа 2016 г.
  39. ^ «Компиляция Haskell в LLVM» . Проверено 22 февраля 2009 г.
  40. ^ «Блог проекта LLVM: компилятор Glasgow Haskell и LLVM» . 17 мая 2010 года . Проверено 13 августа 2010 г.
  41. ^ «Справочное руководство по языку LLVM» . LLVM.org . 10 января 2023 г.
  42. ^ Кан, Джин-Гу. «Wordcode: более целевой битовый код LLVM» (PDF) . Проверено 1 декабря 2019 г.
  43. ^ «PNaCl: переносимые исполняемые файлы собственного клиента» (PDF) . Архивировано из оригинала (PDF) 2 мая 2012 года . Проверено 25 апреля 2012 г.
  44. ^ «МЛИР» . mlir.llvm.org . Проверено 7 июня 2022 г.
  45. ^ «Диалекты – МЛИР» . mlir.llvm.org . Проверено 7 июня 2022 г.
  46. ^ Стеллард, Том (26 марта 2012 г.). «[LLVMdev] RFC: R600, новый серверный компонент для графических процессоров AMD» . llvm-dev (список рассылки).
  47. ^ «Руководство пользователя для серверной части AMDGPU — документация LLVM 15.0.0git» .
  48. ^ Замечания по реализации для конкретной цели: матрица целевых функций // Генератор кода, независимый от цели, LLVM, сайт LLVM.
  49. ^ «Удалить серверную часть mblaze из llvm» . Гитхаб . 25 июля 2013 года . Проверено 26 января 2020 г.
  50. ^ «Удалить альфа-сервер» . Гитхаб . 27 октября 2011 года . Проверено 26 января 2020 г.
  51. ^ «[Nios2] Удалить серверную часть Nios2» . Гитхаб . 15 января 2019 года . Проверено 26 января 2020 г.
  52. ^ «lld — компоновщик LLVM» . Проект ЛЛВМ . Проверено 10 мая 2017 г.
  53. ^ «Порт WebAssembly lld» .
  54. ^ «42446 — lld не может обрабатывать файлы GCC LTO» . bugs.llvm.org .
  55. ^ " "libc++" Стандартная библиотека C++" .
  56. ^ «Полли — Полиэдральная оптимизация для LLVM» .
  57. ^ «llvm-libc: Стандартная библиотека, совместимая с ISO C — документация libc 15.0.0git» . libc.llvm.org . Проверено 18 июля 2022 г.
  58. ^ «Расширения языка Clang» . Документация Clang 12 . Обратите внимание, что номера маркетинговых версий не следует использовать для проверки языковых функций, поскольку разные поставщики используют разные схемы нумерации. Вместо этого используйте макросы проверки функций.
  59. ^ «apple/llvm-проект» . Яблоко. 5 сентября 2020 г.
  60. ^ «Компиляторы IBM C/C++ и Fortran перенесут инфраструктуру с открытым исходным кодом LLVM» .
  61. ^ «Компиляторы Intel C/C++ завершают внедрение LLVM» . Интел . Проверено 17 августа 2021 г.
  62. ^ "ланл/кицунэ" . Лос-Аламосская национальная лаборатория. 27 февраля 2020 г.
  63. ^ «Спецификация NVVM IR 1.5» . Текущий NVVM IR основан на LLVM 5.0.
  64. ^ Инструментарий разработчика для PS4 (PDF) , получено 24 февраля 2015 г.
  65. ^ Латтнер, Крис (15 марта 2012 г.). «Глава 11» . Архитектура приложений с открытым исходным кодом . Эми Браун, Грег Уилсон. ISBN  978-1257638017 .

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

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