summaryrefslogtreecommitdiff
path: root/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README.txt')
-rw-r--r--README.txt25
1 files changed, 25 insertions, 0 deletions
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..7776f2e
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,25 @@
+--- boostrapping a (Linux x86-64) C compiler ---
+
+Compilers nowadays are written in languages like C, which themselves need to be
+compiled. But then, you need a C compiler to compile your C compiler! Of course,
+the very first C compiler was not written in C (because how would it be
+compiled?). Instead, it was slowly built up, starting from a very basic
+assembler, eventually reacing a full-scale compiler. This process is known as
+bootstrapping. In this repository, we'll explore how that's done. Each directory
+represents a new "stage" in the process. The first one, "00", is a hand-written
+executable, and the last one will be a C compiler. Each directory has its own
+README.txt explaining in full what's going on.
+
+-- instruction set --
+x86-64 has a *gigantic* instruction set. The manual for it is over 2,000 pages
+long! So, it makes sense to select only a small subset of it to use for all the
+stages of our compiler. The set I've chosen can be found in instructions.txt (a
+work in progress). I think it achieves a pretty good balance between
+having few enough instructions to be manageable and having enough
+instructions to be useable.
+
+-- license --
+
+This software is in the public domain. Any copyright protections from any law
+for this software are forfeited by the author(s). No warranty is provided for
+this software, and the author(s) shall not be held liable in connection with it.