-
Notifications
You must be signed in to change notification settings - Fork 0
/
print_code.h
30 lines (23 loc) · 865 Bytes
/
print_code.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef PRINT_CODE_H
#define PRINT_CODE_H
#include "module_collector.h"
// Abstract base class for ModuleCollector which print generated code
class PrintCode : public ModuleCollector {
private:
enum Mode {
NONE, RODATA, DATA, CODE,
};
Mode m_mode;
public:
PrintCode();
virtual ~PrintCode();
virtual void collect_string_constant(const std::string &name, const std::string &strval);
virtual void collect_global_var(const std::string &name, const std::shared_ptr<Type> &type);
virtual void collect_function(const std::string &name, const std::shared_ptr<InstructionSequence> &iseq);
// This can be overridden depending on whether we're printing high-level
// or low-level instructions
virtual void print_instructions(const std::shared_ptr<InstructionSequence> &iseq) = 0;
private:
void set_mode(Mode mode);
};
#endif // PRINT_CODE_H