aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0bdef99
--- /dev/null
+++ b/README.md
@@ -0,0 +1,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).