fix bug of big stack cost

This commit is contained in:
2024-08-27 23:22:35 +00:00
parent b903a8d7e9
commit 07df48d0f1
10 changed files with 126 additions and 67 deletions

View File

@ -12,6 +12,7 @@ class IRBuilder : public ASTNodeVirturalVisitor {
std::shared_ptr<ModuleItem> prog;
std::shared_ptr<TypeDefItem> cur_class;
std::shared_ptr<FunctionDefItem> cur_func;
std::shared_ptr<BlockItem> cur_alloca_block;
std::shared_ptr<BlockItem> cur_block;
std::shared_ptr<BlockItem> main_init_block;
std::string cur_class_name;

View File

@ -0,0 +1,39 @@
#pragma once
#include <ios>
#include <memory>
#include <ostream>
#include <string>
#include "IR/IR_basic.h"
class RISCVAsmItemBase {
public:
RISCVAsmItemBase() = default;
virtual ~RISCVAsmItemBase() = default;
virtual void RecursivePrint(std::ostream &os) const = 0;
};
namespace NaiveBackend {
class RISCVConstStrItem : public RISCVAsmItemBase {
public:
RISCVConstStrItem() = default;
~RISCVConstStrItem() = default;
void RecursivePrint(std::ostream &os) const override;
};
class RISCVGlobalVarItem : public RISCVAsmItemBase {
public:
RISCVGlobalVarItem() = default;
~RISCVGlobalVarItem() = default;
void RecursivePrint(std::ostream &os) const override;
};
class RISCVFuncItem : public RISCVAsmItemBase {
public:
RISCVFuncItem() = default;
~RISCVFuncItem() = default;
void RecursivePrint(std::ostream &os) const override;
};
class RISCVProgItem : public RISCVAsmItemBase {
public:
RISCVProgItem() = default;
~RISCVProgItem() = default;
void RecursivePrint(std::ostream &os) const override;
};
}
void GenerateNaiveASM(std::ostream &os, std::shared_ptr<ModuleItem> prog);