GNU-blixten

GNU-blixten
Utvecklare GNU-projekt
Initial release 19 januari 2001 ; 22 år sedan ( 2001-01-19 )
Stabil frisättning
Edit this on Wikidata 2.2.0 / 16 november 2022
Förvar
Operativ system Cross-plattform
Plattform GNU
Typ Just-in-time sammanställning
Licens
2007: LGPL-3.0 eller senare 2002: LGPL-2.1 eller senare
Hemsida Officiell hemsida

GNU lightning är ett gratisprogrambibliotek för att generera assembly-språkkod vid körning. Version 2.1.3, släppt i september 2019, stöder backends för SPARC (32-bitars), x86 (32- och 64-bitars), MIPS , ARM (32- och 64-bitars), ia64 , HPPA , PowerPC (32- bit), Alpha , S390 och RISC-V (64-bitar).

Fördelar jämfört med andra bibliotek

De funktioner som GNU lightning tillhandahåller gör den användbar för Just-in-Time-kompilering . I jämförelse med bibliotek som LLVM eller libJIT tillhandahåller GNU lightning endast ett lågnivågränssnitt för sammansättning från ett standardiserat RISC-sammansättningsspråk – löst baserat på SPARC- och MIPS -arkitekturerna – till målarkitekturens maskinspråk.

Nackdelar

Den tillhandahåller inte registerallokering , dataflödes- eller kontrollflödesanalys eller optimering . [ citat behövs ] Med start från 2.x genererar den kod via mellanliggande graf, snarare än en efter en från varje It's standardiserade instruktion. Denna ändring tillåter interinstruktionsoptimering såsom registerallokering och eliminering av död kod [1] .

Instruktionsuppsättning

GNU lightnings instruktionsuppsättning är löst baserat på befintliga RISC- arkitekturer.

Typer

Vid behov hanterar instruktioner data med dessa 9 typer:

Typ C ekvivalent
c signerad röding
uc osignerad röding
s kort
oss osignerad kort
i int
ui osignerad int
l lång
f flyta
d dubbel

Projekt som använder GNU lightning

GNU Smalltalk , GNU Guile och CLISP använder GNU lightning för just-in-time kompilering . GNU lightning utvecklades först som ett verktyg för att användas i GNU Smalltalks dynamiska översättare från bytekoder till inbyggd kod. GNU Guile 2.9.2 och senare slutar använda GNU lightning 2.x istället för sin egen gaffel baserad på GNU lightning 1.4 för generering av inbyggd kod, eftersom GNU lightning 2.x ägnar mer komplexitet åt interinstruktionsoptimering.

Anteckningar

externa länkar