GNU lightning是在运行时生成汇编语言代码的自由软件库。版本2.0发行于2013年8月,支持的后端包括:x86(32-bit和64-bit)、ARM、MIPS、PowerPC(32-bit)、IA-64、SPARC(32-bit)和PA-RISC[3]。
相较其他库的优点
GNU提供的特征使它可用于即时编译。相较于LLVM或libJIT这样的库,GNU lightning只提供低层汇编接口,把宽松的基于SPARC和MIPS架构的一种标准化RISC汇编语言[4],编译成目标架构的机器语言。
缺点
指令集
GNU lightning的指令集松散的基于了现存的RISC架构。
所需的指令处理如下9种类型的数据:
类型 | C等价 |
---|---|
c | signed char |
uc | unsigned char |
s | short |
us | unsigned short |
i | int |
ui | unsigned int |
l | long |
f | float |
d | double |
使用GNU lightning的项目
Racket[5],GNU Smalltalk[6],GNU Guile[7]和CLISP[8]使用GNU lightning进行即时编译。GNU lightning最初开发用于GNU Smalltalk的从字节码到本地代码的动态转换器的工具[9]。