blob: 0bdef9966e83e0b60d836f58db8d384c406aa291 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# Sjit
Sjit is a stupid just in time compiler.
It does almost nothing, and what it does, it does badly and is not useful.
- There is no parser, you have to write your program in the internal Clean
representation (see `Start` in [`sjit.icl`](/sjit.icl)).
- There is no type checker, you have to guess the implicit rules (such as that
a `fun_expr` must always be an `Abstr`).
- There is no register allocation, everything is done on the stack.
- There is no code optimisation, not even to eliminate `push rbx` followed by
`pop rbx`.
- JIT generated code is for the x64 instruction set only.
- Because we use `mmap` and `mprotect` this only works on POSIX systems.
## Usage
```bash
git clone https://gitlab.science.ru.nl/cstaps/sjit-compiler
cd sjit-compiler
make
./sjit
```
## Colophon
Copyright © 2018–present [Camil Staps](https://camilstaps.nl).
|