aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 00eafddacae749a46cbd2ff01cdec12abf6fbe3f (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
# 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.
- 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).