generated from loic/c-template
24 lines
1.1 KiB
Markdown
24 lines
1.1 KiB
Markdown
# 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.
|