Błyskawica GNU
Deweloperzy | Projekt GNU |
---|---|
Pierwsze wydanie | 19 stycznia 2001 |
Wersja stabilna | |
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