GNU Lightning er et bibliotek til hurtigt at generere maskinkode under kørsel ( JIT - kompilering). Skrevet i C -sprog .
Forfatteren af GNU Ligtning-biblioteket er Paolo Bonzini. Den er baseret [1] på den dynamiske assembler ccg af Ian Piumarta [2] .
Dette bibliotek er velegnet til JIT-kompilering , men i modsætning til værktøjer som LibJIT eller LLVM implementerer det en mere lav-niveau tilgang. Lighting bruger ikke nogen mellemrepræsentation af programmer, såsom bytecode , men oversætter instruktionerne fra en abstrakt assembler virtuel RISC-processor til maskinkode for en af de understøttede arkitekturer. Sådanne arkitekturer omfatter i686 , X86-64 , MIPS , ARM , PowerPC , SPARC , IA-64 og hppa . På grund af denne arkitektur giver biblioteket ingen optimeringer .
På trods af maskinuafhængigheden af instruktionssættet, der understøttes af det virtuelle assembler-bibliotek, fungerer det med kun seks heltalsregistre , og en specialiseret stak bruges til flydende kommaoperationer [1] . Der er en forgrening af biblioteket kaldet MyJIT [3] , som ikke har disse begrænsninger.
Biblioteket bruges til at implementere JIT-kompilering i særlige compilere såsom Racket , GNU Smalltalk og CLISP [4] ; og også, siden version 3.0 [5] , Guile [6] .
Sandeep Koranne. 13.5.5 GNU lightning // Håndbog i Open Source-værktøjer . - Springer, 29. oktober 2010. - S. 269-271. - 520 sider. — ISBN 978-1-4419-7718-2 .