summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-11-15 09:16:33 -0800
committerCliff Click <cliffc@acm.org>2024-11-23 09:03:20 -0800
commit9c384ff44d32857b81723c82aeea0bcbd8aab30c (patch)
treee054ca8295c9c3489b6cf47071fef2a698904a8b /README.md
parent20e598812cfe3bf2241e4c856e017acb29f13192 (diff)
downloadSimple-9c384ff44d32857b81723c82aeea0bcbd8aab30c.tar.gz
Simple-9c384ff44d32857b81723c82aeea0bcbd8aab30c.zip
More README
Diffstat (limited to 'README.md')
-rw-r--r--README.md22
1 files changed, 16 insertions, 6 deletions
diff --git a/README.md b/README.md
index e4263362..75d556f2 100644
--- a/README.md
+++ b/README.md
@@ -6,14 +6,24 @@ This repo is intended to demonstrate the Sea-of-Nodes compiler IR.
The Sea-of-Nodes is the core IR inside of HotSpot's C2 compiler
and Google's V8 compiler and Sun/Oracle's Graal compiler.
-Since we are show casing the SoN IR, the *language* being implemented is less important.
-We're using a very simple language similar to C or Java, but with far fewer features.
+Since we are show casing the SoN IR, the *language* being implemented is less
+important. We're using a very simple language similar to C or Java, but with
+far fewer features. Simple is strongly typed, object-oriented, with first-
+class *functions* not *closures*. Object references are pointers, and null
+pointer exceptions are disallowed by the typing system. Arrays will probably
+be range-checked at some point, making Simple a fully safe language. Simple
+has a minimal syntax that can be parsed with a recursive descent parser.
+
The Sea-of-Nodes is used for machine code generation in these industrial
-strength systems - but for this demonstration the backend is both difficult
-and less important.
+strength systems - but for this demonstration the backend is both difficult and
+less important. This repo will eventually target X86 and at least one more
+machine with ahead-of-time compilation - but with an eye to JIT compilation.
+
+This repo also is not intended to be a complete language in any sense, and so
+the backend starts with levering Java: the Evaluator (first appears in Chapter
+10) directly slowly interprets the SoN IR. Code-gen first appears in Chapter
+19.
-This repo also is not intended to be a complete language in any sense,
-and so the backend will probably start with levering C or Java.
## Chapters