mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +02:00
Flesh out README
This commit is contained in:
parent
f0cecc45d4
commit
02ce8952ef
2 changed files with 29 additions and 3 deletions
3
README
3
README
|
@ -1,3 +0,0 @@
|
||||||
GNU lightning is a library to aid in making portable programs
|
|
||||||
that compile assembly code at run time. For more information,
|
|
||||||
look at the info documentation.
|
|
29
README.md
Normal file
29
README.md
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# Lightening
|
||||||
|
|
||||||
|
Lightening is a just-in-time code generation library derived from GNU
|
||||||
|
Lightning, adapted to the purposes of the GNU Guile project.
|
||||||
|
|
||||||
|
## Use
|
||||||
|
|
||||||
|
```
|
||||||
|
gcc -flto -O2 -g -o jit.o -c jit/jit.c
|
||||||
|
gcc -flto -O2 -g -o my-program jit.o my-program.c
|
||||||
|
```
|
||||||
|
|
||||||
|
See the GNU Lightning manual for more on how to program against
|
||||||
|
Lightening (much of the details are the same).
|
||||||
|
|
||||||
|
## What's the difference with GNU Lightning?
|
||||||
|
|
||||||
|
This project is called Lightening because it's lighter-weight than GNU
|
||||||
|
Lightning. When you go to generate code at run-time with GNU Lightning,
|
||||||
|
what happens is that you build up a graph of nodes which GNU Lightning
|
||||||
|
"optimizes" before finally emitting machine code. These optimizations
|
||||||
|
can improve register allocation around call sites. However they are not
|
||||||
|
helpful from a Guile perspective, as they get in the way of register
|
||||||
|
allocation that we need to do; and they actually prevent access to all
|
||||||
|
the registers that we would like to have.
|
||||||
|
|
||||||
|
Guile needs a simple, light-weight code generation library. The GNU
|
||||||
|
Lightning architecture-specific backends provide the bulk of this
|
||||||
|
functionality, and Lightening wraps it all in a lightweight API.
|
Loading…
Add table
Add a link
Reference in a new issue