实现了C++语法的一个子集,包括
- 函数
- 函数声明
- 数组
int
bool
变量if
while
控制流
函数默认为外部链接性,不支持重载,没有mangle。
输入文件 code.cpp
int putchar(int a);
int main() {
putchar(48);
putchar(49);
return 0;
}
利用LLVM后端进行编译:
$ # 编译
$ cargo run -- -o code.o code.cpp
$ # 链接
$ gcc -o main code.o
$ ./main
01
利用RISC-V后端进行编译:
$ # 生成 RV32 汇编
$ cargo run -- --emit=riscv -o code.s code.cpp
$ # 编译链接
$ riscv32-unknown-elf-gcc -o main code.s
$ qemu-riscv32 ./main
01