diff --git a/README.md b/README.md index 4da21f6..bc36a48 100644 --- a/README.md +++ b/README.md @@ -1 +1,24 @@ # Dr_Quine + +A **quine** is a program that prints its own source code without reading any +file. This project implements quines in 3 languages: **C**, **x86-64 +Assembly**, and **Shell**. + +The replication logic relies on a string that contains the source code of the +program itself. When a special placeholder character (`$`) is encountered while +printing that string, the program switches into *escape mode* and prints the +string again — this time with special characters escaped — so the output is +valid source code. Every other character is printed as-is. The result is a +perfect copy of the original source. + +## Programs + +- **Colleen** — simple quine, prints its source to stdout +- **Grace** — writes its source into a new file `Grace_Kid.c` +- **Sully** — generates and compiles a child program, then runs it, counting + down from 5 to 0 + +> **Warning:** The assembly code in this project does not follow the System V +> AMD64 ABI — calling conventions, callee-saved/caller-saved registers, and +> stack alignment are not properly respected. This was my first program in +> assembly.