Błyskawica GNU

Błyskawica GNU
Deweloperzy Projekt GNU
Pierwsze wydanie 19 stycznia 2001 ; 22 lata temu ( 19.01.2001 )
Wersja stabilna
Edit this on Wikidata 2.2.0 / 16 listopada 2022 r
Magazyn
System operacyjny Międzyplatformowe
Platforma GNU ANTYLOPA
Typ Kompilacja w samą porę
Licencja
2007: LGPL-3.0-lub nowszy 2002: LGPL-2.1-lub nowszy
Strona internetowa Oficjalna strona internetowa

Lightning GNU to biblioteka wolnego oprogramowania do generowania kodu języka asemblera w czasie wykonywania. Wersja 2.1.3, wydana we wrześniu 2019 r., obsługuje backendy dla SPARC (32-bit), x86 (32- i 64-bit), MIPS , ARM (32- i 64-bit), ia64 , HPPA , PowerPC (32- i 64-bitowy ) bit), Alpha , S390 i RISC-V (64-bit).

Przewaga nad innymi bibliotekami

Funkcje zapewniane przez GNU Lightning sprawiają, że jest on przydatny do kompilacji Just-in-Time . W porównaniu z bibliotekami takimi jak LLVM czy libJIT , GNU Lightning zapewnia jedynie interfejs niskiego poziomu do asemblera ze standardowego języka asemblera RISC — luźno opartego na architekturach SPARC i MIPS — na język maszynowy architektury docelowej.

Niedogodności

Nie zapewnia alokacji rejestrów , analizy przepływu danych , przepływu sterowania ani optymalizacji . [ Potrzebne źródło ] Począwszy od wersji 2.x generuje kod za pomocą pośredniego wykresu, a nie jeden po drugim z każdej znormalizowanej instrukcji. Ta zmiana umożliwia optymalizację między instrukcjami, taką jak alokacja rejestrów i eliminacja martwego kodu [1] .

Zestaw instrukcji

Zestaw instrukcji GNU Lightning jest luźno oparty na istniejących architekturach RISC .

typy

Gdy jest to wymagane, instrukcje obsługują dane z tymi 9 typami:

Typ odpowiednik C
C podpisany znak
uc znak bez znaku
S krótki
nas krótki bez znaku
I int
interfejs użytkownika bez znaku wewn
l długi
F platforma
D podwójnie

Projekty korzystające z błyskawicy GNU

GNU Smalltalk , GNU Guile i CLISP wykorzystują GNU Lightning do kompilacji just-in-time . Lightning GNU został pierwotnie opracowany jako narzędzie do wykorzystania w dynamicznym tłumaczu GNU Smalltalk z kodów bajtowych na kod natywny. GNU Guile 2.9.2 i nowsze przestają używać GNU Lightning 2.x zamiast własnego widelca opartego na GNU Lightning 1.4 do generowania natywnego kodu, ponieważ GNU Lightning 2.x poświęca większą złożoność optymalizacji między instrukcjami.

Notatki

Linki zewnętrzne