diff --git a/README.md b/README.md index 9dfee4f8..19aee0c1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ VitaminC 🍋 is an educational C compiler frontend written in C++. As a fronten > [!WARNING] > This project is still under development. Many features are not yet implemented. Currently, we do not support preprocessor directives, and only the `int` type and its pointer, as well as object types, are supported. -The main goal of this project is to demonstrate how a compiler frontend works with [the LLVM compiler infrastructure](https://llvm.org/) and generates LLVM IR. However, we are not yet there. Currently, we generate [QBE](https://c9x.me/compile/) IR manually. +The main goal of this project is to demonstrate how a compiler frontend works with [the LLVM compiler infrastructure](https://llvm.org/) and generates LLVM IR. Currently, this compiler can generate [QBE](https://c9x.me/compile/) IR and [LLVM](https://llvm.org/docs/LangRef.html) IR. We are not aiming to be a fully compliant C compiler, although we strive to be as compliant as possible with C89 and support common C99 features. @@ -17,7 +17,8 @@ We are not aiming to be a fully compliant C compiler, although we strive to be a - A C++ compiler that supports C++17. - [GNU Make](https://www.gnu.org/software/make/): for building the project. -- [QBE](https://c9x.me/compile/releases.html): for compiling the QBE IR down to assembly. +- [QBE](https://c9x.me/compile/releases.html): for compiling QBE IR to assembly. +- [LLVM-18](https://releases.llvm.org/): for generating LLVM IR and compiling it to assembly. - [cxxopts](https://github.com/jarro2783/cxxopts): for command-line argument parsing. - [fmt](https://fmt.dev/latest/index.html): for modern C++ formatting. - (test-only) [turnt](https://github.com/cucapra/turnt): for snapshot testing. @@ -49,10 +50,10 @@ A simple C compiler. Usage: ./vitaminc [options] file - -o, --output Write output to (default: a.out) - -d, --dump Dump the abstract syntax tree - -t, --target [qbe] Specify target IR (default: qbe) - -h, --help Display available options + -o, --output Write output to (default: a.out) + -d, --dump Dump the abstract syntax tree + -t, --target [qbe|llvm] Specify target IR (default: qbe) + -h, --help Display available options ``` ## License