GNU lightning
|
| |
| 開発元 | GNU Project |
|---|---|
| 初版 | 2001年1月19日[1] |
| 最新版 | |
| リポジトリ | |
| 対応OS | クロスプラットフォーム |
| プラットフォーム | GNU |
| 種別 | 実行時コンパイラ |
| ライセンス |
2007年: LGPL-3.0-or-later[注釈 1] 2002年: LGPL-2.1-or-later[注釈 2] |
| 公式サイト | 公式ウェブサイト |
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)のバックエンドをサポートしている[5][6]。
利点
[編集]GNU lightningが提供する機能は実行時コンパイルに役立つ。LLVMやlibJITなどのライブラリと比較すると、GNU lightningはSPARCおよびMIPSアーキテクチャに緩く基づいた標準化されたRISCアセンブリ言語からターゲットアーキテクチャの機械語にアセンブルするための低水準インターフェースのみを提供する。
欠点
[編集]レジスタ割り付け、データフローや制御フロー解析、最適化は提供されない[要出典]。2.xからは、標準化された命令ごとに1つずつコードを生成するのではなく、中間グラフを介してコードを生成する。この変更により、レジスタ割り付けやデッドコード削除などの命令間の最適化が可能になる[7]。
命令セット
[編集]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[8]、GNU Guile[9]、CLISP[10]は実行時コンパイルにGNU lightningを使用している。GNU lightningは当初、バイトコードからネイティブコードへのGNU Smalltalkの動的トランスレータとして開発された[11]。GNU Guile 2.9.2以降では、ネイティブコード生成にGNU lightning 2.xの使用をやめ、代わりにGNU lightning 1.4に基づく独自のフォークを使用している。これは、GNU lightning 2.xが命令間の最適化に多くの複雑さを費やしているためである[12]。
注釈
[編集]脚注
[編集]- ↑ “ChangeLog”. GNU Project. 2009年2月22日閲覧。
- ↑ Paulo César Pereira de Andrade (2024年2月8日). “GNU lightning 2.2.3 released!” (英語). 2024年3月8日閲覧。
- ↑ “README-hacking”. 2025年2月13日閲覧。
- ↑ “lightning-1.1.1.tar.gz”. 2025年2月13日閲覧。
- ↑ “GNU lightning”. 2020年1月15日閲覧。
- ↑ “GNU lightning 2.1.3 released!” (2019年9月18日). 2025年2月13日閲覧。
- ↑ “lightening run-time code generation — wingolog”. 2025年2月13日閲覧。
- ↑ “GNU Smalltalk project page”. 2014年5月17日閲覧。
- ↑ “Just-In-Time Native Code”. 2020年5月13日時点のオリジナルよりアーカイブ。2019年3月11日閲覧。
- ↑ “Implementation notes for GNU CLISP”. 2009年2月23日閲覧。
- ↑ “GNU lightning user manual, acknowledgements”. 2014年5月17日閲覧。
- ↑ “lightening run-time code generation -- wingolog”. 2021年12月10日閲覧。