Home

Awesome

30 C Compiler!

30cc (Pronounced as CCC, because in the Persian language, the number 30 is pronounced as C) is a toy C compiler written in C, which is strong enough to compile itself 🤝 This was my first attempt in writing a self-hosting software! What is a self-hosting software?

30cc emits x86-64 assembly as its output. The outputs are totally unoptimized, but that's fine, the project aims to be educational.

Usage

Bootstrap the compiler by running make. This will generate 3 different versions of 30cc compiler:

  1. 30cc_gcc which is the bootstrapped gcc-compiled version of 30cc
  2. 30cc_30cc which is the output of gcc-compiled 30cc compiler, compiling the 30cc compiler
  3. 30cc which is the output of 30cc-compiled 30cc compiler, compiling the 30cc compiler

Running independent source-files through make:

make run program=./examples/inp.c arguments=something

Contribute

Tests

To run tests use

python scripts/test.py update

Then check the output of the tests.

If you are on mac use ./scripts/test_mac.sh to run the tests in docker.