GNU lightning
GNU lightning is a free-software library for generating assembly language code at run-time. Version 2.1.3, released in September 2019, supports backends for SPARC, x86, MIPS, ARM, ia64, HPPA, PowerPC, Alpha, S390 and RISC-V.
Advantages over other libraries
The features GNU lightning provides make it useful for Just-in-Time Compilation. In comparison to libraries such as LLVM or libJIT, GNU lightning provides only a low-level interface for assembling from a standardized RISC assembly language—loosely based on the SPARC and MIPS architectures—into the target architecture's machine language.Disadvantages
It does not provide register allocation, data-flow or control-flow analysis, or optimization.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.
Instruction set
GNU lightning's instruction set is based loosely on existing Reduced [instruction set computing|RISC] architectures.Types
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 |