mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +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