构建IR打印器,llvm风格,跑通大部分样例(9/10),待修复

This commit is contained in:
rain2133
2025-06-22 17:59:19 +08:00
parent 4711fb603b
commit 496e2abfb6
5 changed files with 520 additions and 16 deletions

View File

@@ -8,7 +8,8 @@ using namespace std;
using namespace antlr4;
// #include "Backend.h"
#include "SysYIRGenerator.h"
#include "RISCv32Backend.h"
#include "SysYIRPrinter.h"
// #include "LLVMIRGenerator.h"
using namespace sysy;
static string argStopAfter;
@@ -71,22 +72,14 @@ int main(int argc, char **argv) {
// visit AST to generate IR
SysYIRGenerator generator;
generator.visitCompUnit(moduleAST);
if (argStopAfter == "ir") {
// auto module = generator.get();
// module->print(cout);
return EXIT_SUCCESS;
}
// generate assembly
auto module = generator.get();
sysy::RISCv32CodeGen codegen(module);
string asmCode = codegen.code_gen();
if (argStopAfter == "asm") {
cout << asmCode << endl;
if (argStopAfter == "ir") {
SysYIRGenerator generator;
generator.visitCompUnit(moduleAST);
auto moduleIR = generator.get();
SysYPrinter printer(moduleIR);
printer.printIR();
return EXIT_SUCCESS;
}
return EXIT_SUCCESS;
}