fixed bugs brought out by merging

This commit is contained in:
lixuanwang
2025-06-22 14:39:38 +08:00
parent dda8bbe444
commit 4711fb603b
3 changed files with 9 additions and 10 deletions

View File

@ -15,7 +15,7 @@ add_executable(sysyc
sysyc.cpp
IR.cpp
SysYIRGenerator.cpp
Backend.cpp
# Backend.cpp
RISCv32Backend.cpp
)
target_include_directories(sysyc PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include)

View File

@ -35,16 +35,16 @@ std::string RISCv32CodeGen::code_gen() {
std::string RISCv32CodeGen::module_gen() {
std::stringstream ss;
// 生成全局变量(数据段)
for (const auto& global : *module->getGlobalValues()) {
for (const auto& global : module->getGlobals()) {
ss << ".data\n";
ss << ".globl " << global.second->getName() << "\n";
ss << global.second->getName() << ":\n";
ss << ".globl " << global->getName() << "\n";
ss << global->getName() << ":\n";
ss << " .word 0\n"; // 假设初始化为0
}
// 生成函数
// 生成函数(文本段)
ss << ".text\n";
for (const auto& func : *module->getFunctions()) {
ss << function_gen(func.second);
for (const auto& func : module->getFunctions()) {
ss << function_gen(func.second.get());
}
return ss.str();
}

View File

@ -74,8 +74,8 @@ int main(int argc, char **argv) {
SysYIRGenerator generator;
generator.visitCompUnit(moduleAST);
if (argStopAfter == "ir") {
auto module = generator.get();
module->print(cout);
// auto module = generator.get();
// module->print(cout);
return EXIT_SUCCESS;
}
@ -83,7 +83,6 @@ int main(int argc, char **argv) {
auto module = generator.get();
sysy::RISCv32CodeGen codegen(module);
string asmCode = codegen.code_gen();
cout << asmCode << endl;
if (argStopAfter == "asm") {
cout << asmCode << endl;
return EXIT_SUCCESS;