GNU lightning

GNU lightningは実行時にアセンブリ言語コードを生成する自由ソフトウェアライブラリである。2019年9月にリリースされたバージョン2.1.3は、SPARC（32bit）、x86（32bit, 64bit）、MIPS、ARM（32bit, 64bit）、ia64、HPPA、PowerPC（32bit）、Alpha、S390、RISC-V（64bit）のバックエンドをサポートしている。

 利点 
GNU lightningが提供する機能は実行時コンパイルに役立つ。LLVMやlibJITなどのライブラリと比較すると、GNU lightningはSPARCおよびMIPSアーキテクチャに緩く基づいた標準化されたRISCアセンブリ言語からターゲットアーキテクチャの機械語にアセンブルするための低水準インターフェースのみを提供する。

 欠点 
レジスタ割り付け、データフローや、最適化は提供されない。2.xからは、標準化された命令ごとに1つずつコードを生成するのではなく、中間グラフを介してコードを生成する。この変更により、レジスタ割り付けやデッドコード削除などの命令間の最適化が可能になる。

 命令セット 
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を使用するプロジェクト 
GNU Smalltalk、GNU Guile、CLISPは実行時コンパイルにGNU lightningを使用している。GNU lightningは当初、バイトコードからネイティブコードへのGNU Smalltalkの動的トランスレータとして開発された。GNU Guile 2.9.2以降では、ネイティブコード生成にGNU lightning 2.xの使用をやめ、代わりにGNU lightning 1.4に基づく独自のフォークを使用している。これは、GNU lightning 2.xが命令間の最適化に多くの複雑さを費やしているためである。

 注釈 

 脚注 

 外部リンク 
GNU lightning（Free Software Directory）

Category:GNUプロジェクトのソフトウェア