summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authordibyendumajumdar <mobile@majumdar.org.uk>2023-09-07 19:33:52 +0100
committerdibyendumajumdar <mobile@majumdar.org.uk>2023-09-07 19:33:52 +0100
commit85e5d41217d27fd481a21d17f061d31dc120873b (patch)
tree96e3fe2d316cf5a8fd78b6734054c23d3251cb54 /README.md
parent867405ea40d3c8acd93e5e0e6030e8ad96eb2470 (diff)
downloadSimple-85e5d41217d27fd481a21d17f061d31dc120873b.tar.gz
Simple-85e5d41217d27fd481a21d17f061d31dc120873b.zip
Removed all external code.
Removed the common chapter. Reimplemented Lexer. Revised the list of chapters to something more accurate.
Diffstat (limited to 'README.md')
-rw-r--r--README.md36
1 files changed, 22 insertions, 14 deletions
diff --git a/README.md b/README.md
index 78db3c08..8acd8585 100644
--- a/README.md
+++ b/README.md
@@ -19,21 +19,29 @@ and so the backend will probably start with levering C or Java.
The following is a rough plan, subject to change.
-The Common chapter defines code that will be reused throughout.
-
-The remaining chapters will each be self-sufficient and complete; in the sense that each chapter will fully implement
-a subset of the simple language. Each chapter will also include a detailed commentary on relevant aspects of the
+Each chapter will be self-sufficient and complete; in the sense that each chapter will fully implement
+a subset of the simple language, and include everything that was created in the previous chapter.
+Each chapter will also include a detailed commentary on relevant aspects of the
Sea Of Nodes intermediate representation.
The simple language will be a small subset of C.
-* [Common](common/README.md): Common utilities including a lexer.
-* [Language](language/README.md): Simple language definition.
-* [Chapter 1](chapter01/README.md): Simple control flow statements, `if` and `while`. Variables of `int` type. Simple
- arithmetic such as addition, subtraction, multiplication, division. Non-zero values will be truthy.
-* Chapter 2: Function calls.
-* Chapter 3: Comparison operators.
-* Chapter 4: Boolean operators `&&`, `||` and `!`.
-* Chapter 5: `float` and one dimensional static length array type.
-* Chapter 6: Visualize Sea of Nodes IR.
-* Chapter 7: Optimizations - tbc \ No newline at end of file
+* [Language](language/README.md): Simple language grammar.
+* [Chapter 1](chapter01/README.md): Empty script - i.e. empty function that takes no args and returns nothing, and has empty body.
+* Chapter 2: Simple binary arithmetic such as addition, subtraction, multiplication, division with constants. Peephole optimization / simple constant folding.
+* Chapter 3: Graphical Visualization of Sea of Nodes IR.
+* Chapter 4: Local variables, and assignment statements. Read on RHS, SSA, more peephole optimization if local is a constant.
+* Chapter 5: Binary and Comparison operators involving constants and variables. Non-zero values will be truthy.
+* Chapter 6: `if` statement. CFG construction, peephole optimization around dead control flow.
+* Chapter 7: `while` statement.
+* Chapter 8: Global Value Numbering.
+* Chapter 9: Function calls.
+* Chapter 10: Boolean operators `&&`, `||` and `!` including short circuit.
+* Chapter 11: `float` type.
+* Chapter 12: Memory effects: general memory edges in SSA. Peephole optimization around load-after-store/store-after-store.
+* Chapter 13: Equivalence class aliasing, fine grained peephole optimizations. Free ptr-to analysis in SoN; but does not handle aliasing in arrays.
+* Chapter 14: One dimensional static length array type. Array load/store.
+* Chapter 15: Global Code Motion - unwind SoN to CFG. Scheduling.
+* Chapter 16: Instruction selection, BURS.
+* Chapter 17: Backend register allocation.
+* Chapter 18: Garbage Collection. \ No newline at end of file