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.

Instruction set

GNU lightning's instruction set is based loosely on existing RISC architectures.

Types

When required instructions handle data with these 9 types:
TypeC equivalent
csigned char
ucunsigned char
sshort
usunsigned short
iint
uiunsigned int
llong
ffloat
ddouble

Projects that use GNU lightning

, GNU Smalltalk, GNU Guile, and CLISP make use of GNU lightning for just-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.