GNU-blixten
Utvecklare | GNU-projekt |
---|---|
Initial release | 19 januari 2001 |
Stabil frisättning | |
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