Русская Википедия:GNU Lightning

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

GNU Lightning — библиотека для быстрой генерации машинного кода во время исполнения программы (JIT-компиляции). Написана на языке Си.

Автор библиотеки GNU Ligtning — Paolo Bonzini. Она основана[1] на динамическом ассемблере ccg за авторством Ian Piumarta[2].

Назначение и особенности

Данная библиотека хорошо подходит для JIT-компиляции, однако, в отличие от таких инструментов, как LibJIT или LLVM, реализует более низкоуровневый подход. Lighting не использует какого-либо промежуточного представления программ, вроде байткода, но транслирует инструкции некоего абстрактного ассемблера виртуального RISC-процессора в машинный код одной из поддерживаемых архитектур. К таким архитектурам относятся i686, X86-64, MIPS, ARM, PowerPC, SPARC, IA-64 и hppa. Вследствие такой архитектуры библиотека не предоставляет каких-либо средств оптимизации.

Несмотря на машиннонезависимость набора инструкций поддерживаемого библиотекой виртуального ассемблера, он оперирует лишь с шестью целочисленными регистрами, а для операций с плавающей точкой используется специализированный стек[1]. Существует форк библиотеки, который называется MyJIT[3], в котором этих ограничений нет.

Использование

Библиотека используется в для реализации JIT-компиляции в частности в таких трансляторах, как Racket, GNU Smalltalk, и CLISP[4]; а также, начиная с версии 3.0[5], Guile[6].

Примечания

Шаблон:Примечания

Литература

Шаблон:Книга

Ссылки

Шаблон:Freesoft-stub

  1. 1,0 1,1 Шаблон:Статья
  2. Шаблон:Cite web
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Версия 3.0 находится в разработке, с октября 2018 года доступна версия GNU Guile 2.9.1 (beta) c реализацией JIT-компиляции для архитектуры x86-64.
  6. Шаблон:Cite web