Skip to content

youpong/9cc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

61eb6b1 · Jul 8, 2019
Jun 1, 2019
Jul 7, 2019
Dec 27, 2018
Jan 31, 2019
Jul 7, 2019
Nov 21, 2018
Jul 6, 2019
Jul 6, 2019
Jul 7, 2019
Dec 27, 2018
Jul 7, 2019
Jul 6, 2019
Jun 28, 2019
Jul 6, 2019
Jul 7, 2019
Jun 28, 2019
Jul 7, 2019
Jun 7, 2019
Jun 28, 2019
Jun 13, 2019
Jun 13, 2019
Jun 13, 2019
Jun 28, 2019

Repository files navigation

9cc C compiler

低レイヤを知りたい人のためのCコンパイラ作成入門[*1]を 参考に作り始める。 ドラゴンブック[*2]を参考に作り続けている。 目標は self-hosting。

Build

$ make
$ make check

Usage

Command Line interface.

program_file Specifiles program filename.
-ast         Output AST(Abstract Syntax Tree). 
-test        Do unit test.

Sample

 $ 9cc main.c > main.s
 $ 9cc -ast main.c > main.dot
 $ dot -Tpng main.dot > main.png
 
 $ 9cc -test

実装済み

  • 四則演算
  • 論理演算(!=, ==)
  • if, while 文
  • break/continue 文
  • コメント文(/* C style */)
  • 関数定義(int 型のみ)
  • 関数呼び出し(int 型のみ)
  • ローカル変数(int 型, int *型のみ)
  • 単項演算子(-)
  • ポインタ(& address-of, * pointer dereference)
  • ポインタ算術演算(+)

実装する予定

  • sizeof 演算子
  • ポインタ算術演算(-)
  • 論理演算(&&, ||, &, |)
  • for, do while, switch
  • コメント文(// C++ style)
  • グローバル変数
  • 配列
  • 単項演算子(+)
  • ++, --
  • char型
  • 文字列リテラル
  • 構造体
  • extern
  • #include

実装するかもしれない

  • 複文や for 文内のスコープ

環境

  • OS: Ubuntu 19.04
  • ISA: x86_64
  • C compiler: gcc 8.3.0(clang not supported Issues#8)

参考

1: Rui Ueyama[2018] 「低レイヤを知りたい人のためのCコンパイラ作成入門」(https://www.sigbus.info/compilerbook/) 2: A.V.Aho,R.Sethi and J.D.Ullman[1986] Compilers - Principles, Techniques, and Tools, Addison-Wesley コンパイラⅠ - 原理・技法・ツール 原田賢一訳, サイエンス社(1990)

About

This is a project for 9cc study. Thanks to the author of 9cc. https://github.com/rui314/9cc

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published