-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlowlevelcodegen.h
More file actions
45 lines (40 loc) · 1.36 KB
/
Copy pathlowlevelcodegen.h
File metadata and controls
45 lines (40 loc) · 1.36 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef LOWLEVELCODEGEN_H
#define LOWLEVELCODEGEN_H
#include "cfg.h"
#include "symtab.h"
#include <map>
class LowLevelCodeGen {
int vregs_used;
InstructionSequence* _iseq;
SymbolTable* symtab;
std::map<int, int> vreg_refs;
public:
LowLevelCodeGen(SymbolTable* symtab, int vregs);
virtual ~LowLevelCodeGen();
InstructionSequence* get_iseq() const;
Operand vreg_ref(Operand op);
void generate(InstructionSequence* hl_iseq);
void generate_nop(Instruction* hlins);
void generate_load_int_literal(Instruction* hlins);
void generate_add(Instruction* hlins);
void generate_sub(Instruction* hlins);
void generate_mul(Instruction* hlins);
void generate_div(Instruction* hlins);
void generate_mod(Instruction* hlins);
void generate_negate(Instruction* hlins);
void generate_localaddr(Instruction* hlins);
void generate_load_int(Instruction* hlins);
void generate_store_int(Instruction* hlins);
void generate_read_int(Instruction* hlins);
void generate_write_int(Instruction* hlins);
void generate_jump(Instruction* hlins);
void generate_je(Instruction* hlins);
void generate_jne(Instruction* hlins);
void generate_jlt(Instruction* hlins);
void generate_jlte(Instruction* hlins);
void generate_jgt(Instruction* hlins);
void generate_jgte(Instruction* hlins);
void generate_compare(Instruction* hlins);
void generate_mov(Instruction* hlins);
};
#endif // LOWLEVELCODEGEN_H