This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources. Find sources: "GNU lightning" – news ·newspapers ·books ·scholar ·JSTOR(August 2011) (Learn how and when to remove this message) |
![]() | |
Developer(s) | GNU Project |
---|---|
Initial release | January 19, 2001; 24 years ago (2001-01-19)[1] |
Stable release | 2.2.3[2] ![]() |
Repository | |
Operating system | Cross-platform |
Platform | GNU |
Type | Just-in-time compilation |
License | 2007:LGPL-3.0-or-later[a] 2002:LGPL-2.1-or-later[b] |
Website | Official website |
GNU lightning is a free-software library for generatingassembly language code at run-time. Version 2.1.3, released in September 2019, supports backends forSPARC (32-bit),x86 (32- and 64-bit),MIPS,ARM (32- and 64-bit),ia64,HPPA,PowerPC (32-bit),Alpha,S390 andRISC-V (64-bit).[5][6]
The features GNU lightning provides make it useful forJust-in-Time Compilation. In comparison to libraries such asLLVM orlibJIT, GNU lightning provides only a low-level interface for assembling from a standardized RISC assembly language—loosely based on theSPARC andMIPS architectures[7]—into the target architecture's machine language.
It does not provideregister allocation,data-flow orcontrol-flow analysis, oroptimization.[citation needed]Starting from 2.x, it generates code via intermediate graph, rather than one by one from each of its standardized instructions. This change allows inter-instruction optimization such as register allocation and dead code elimination.[8]
GNU lightning's instruction set is based loosely on existingRISC architectures.
When required instructions handle data with these 9 types:
Type | C equivalent |
---|---|
c | signed char |
uc | unsigned char |
s | short |
us | unsigned short |
i | int |
ui | unsigned int |
l | long |
f | float |
d | double |
GNU Smalltalk,[9]GNU Guile,[10] andCLISP[11] make use of GNU lightning forjust-in-time compilation. GNU lightning was first developed as a tool to be used in GNU Smalltalk's dynamic translator from bytecodes to native code.[12] GNU Guile 2.9.2 and later stop using GNU lightning 2.x instead their own fork based on GNU lightning 1.4 for native code generation, because GNU lightning 2.x devotes more complexity to inter-instruction optimization.[13]
![]() | Thisfree and open-source software article is astub. You can help Wikipedia byexpanding it. |