ACSE 2.0.3
Advanced Compiler System for Education
Loading...
Searching...
No Matches
codegen.h
Go to the documentation of this file.
1
3
4#ifndef CODEGEN_H
5#define CODEGEN_H
6
7#include "program.h"
8
20
23
32t_instruction *genADD(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
33
43t_instruction *genSUB(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
44
54t_instruction *genAND(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
55
65t_instruction *genOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
66
76t_instruction *genXOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
77
86t_instruction *genMUL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
87
98t_instruction *genDIV(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
99
109t_instruction *genREM(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
110
122t_instruction *genSLL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
123
136t_instruction *genSRL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
137
150t_instruction *genSRA(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
151
153
154
157
168 t_program *program, t_regID rd, t_regID rs1, int immediate);
169
180 t_program *program, t_regID rd, t_regID rs1, int immediate);
181
192 t_program *program, t_regID rd, t_regID rs1, int immediate);
193
204 t_program *program, t_regID rd, t_regID rs1, int immediate);
205
216 t_program *program, t_regID rd, t_regID rs1, int immediate);
217
228 t_program *program, t_regID rd, t_regID rs1, int immediate);
229
241 t_program *program, t_regID rd, t_regID rs1, int immediate);
242
254 t_program *program, t_regID rd, t_regID rs1, int immediate);
255
268 t_program *program, t_regID rd, t_regID rs1, int immediate);
269
283 t_program *program, t_regID rd, t_regID rs1, int immediate);
284
298 t_program *program, t_regID rd, t_regID rs1, int immediate);
299
301
302
305
316t_instruction *genSEQ(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
317
328t_instruction *genSNE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
329
341t_instruction *genSLT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
342
355 t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
356
368t_instruction *genSGE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
369
382 t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
383
395t_instruction *genSGT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
396
409 t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
410
422t_instruction *genSLE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
423
436 t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
437
439
440
443
455 t_program *program, t_regID rd, t_regID rs1, int immediate);
456
468 t_program *program, t_regID rd, t_regID rs1, int immediate);
469
482 t_program *program, t_regID rd, t_regID rs1, int immediate);
483
496 t_program *program, t_regID rd, t_regID rs1, int immediate);
497
510 t_program *program, t_regID rd, t_regID rs1, int immediate);
511
524 t_program *program, t_regID rd, t_regID rs1, int immediate);
525
538 t_program *program, t_regID rd, t_regID rs1, int immediate);
539
552 t_program *program, t_regID rd, t_regID rs1, int immediate);
553
566 t_program *program, t_regID rd, t_regID rs1, int immediate);
567
580 t_program *program, t_regID rd, t_regID rs1, int immediate);
581
583
584
587
595t_instruction *genJ(t_program *program, t_label *label);
596
606 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
607
617 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
618
630 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
631
643 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
644
656 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
657
669 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
670
682 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
683
695 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
696
708 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
709
721 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
722
724
725
728
736t_instruction *genLI(t_program *program, t_regID rd, int immediate);
737
745t_instruction *genLA(t_program *program, t_regID rd, t_label *label);
746
758 t_program *program, t_regID rd, int immediate, t_regID rs1);
759
774 t_program *program, t_regID rs2, int immediate, t_regID rs1);
775
783t_instruction *genLWGlobal(t_program *program, t_regID rd, t_label *label);
784
799 t_program *program, t_regID rs1, t_label *label, t_regID rtemp);
800
802
803
806
814
819void genStoreRegisterToVariable(t_program *program, t_symbol *var, t_regID reg);
820
825void genStoreConstantToVariable(t_program *program, t_symbol *var, int val);
826
836
846 t_program *program, t_symbol *array, t_regID rIdx, t_regID rVal);
847
856 t_program *program, t_symbol *array, t_regID rIdx, int val);
857
859
860
863
873
884
895
907
909
910
913
920
929
938
940
944
945#endif
t_instruction * genADD(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:47
t_instruction * genSGTU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:205
t_instruction * genPrintCharSyscall(t_program *program, t_regID rs1)
Definition codegen.c:434
t_instruction * genSGEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:245
t_instruction * genBNE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:295
t_instruction * genLW(t_program *program, t_regID rd, int immediate, t_regID rs1)
Definition codegen.c:364
t_instruction * genSRA(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:97
t_instruction * genSGE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:190
t_instruction * genREM(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:82
void genStoreRegisterToVariable(t_program *program, t_symbol *var, t_regID reg)
Definition codegen.c:461
t_instruction * genSLTI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:233
t_regID genLoadVariable(t_program *program, t_symbol *var)
Definition codegen.c:442
t_instruction * genXORI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:133
t_instruction * genECALL(t_program *program)
Definition codegen.c:401
t_instruction * genBGTU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:331
t_instruction * genSLE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:210
t_instruction * genSWGlobal(t_program *program, t_regID rs1, t_label *label, t_regID rtemp)
Definition codegen.c:387
t_instruction * genANDI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:115
t_instruction * genSUB(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:52
void genStoreRegisterToArrayElement(t_program *program, t_symbol *array, t_regID rIdx, t_regID rVal)
Definition codegen.c:538
void genStoreConstantToArrayElement(t_program *program, t_symbol *array, t_regID rIdx, int val)
Definition codegen.c:547
t_instruction * genSEQ(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:170
t_instruction * genSLTU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:185
t_instruction * genLI(t_program *program, t_regID rd, int immediate)
Definition codegen.c:350
t_instruction * genSRLI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:157
t_regID genLoadArrayElement(t_program *program, t_symbol *array, t_regID rIdx)
Definition codegen.c:527
t_instruction * genBLEU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:343
t_instruction * genOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:62
t_instruction * genSGEIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:251
t_instruction * genMULI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:121
t_instruction * genDIVI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:139
t_instruction * genExit0Syscall(t_program *program)
Definition codegen.c:414
t_instruction * genSGTI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:257
t_instruction * genSLTIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:239
t_instruction * genLWGlobal(t_program *program, t_regID rd, t_label *label)
Definition codegen.c:380
t_instruction * genSRAI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:163
t_instruction * genSEQI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:221
t_instruction * genADDI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:103
t_instruction * genSLLI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:151
t_instruction * genSLEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:269
void genStoreConstantToVariable(t_program *program, t_symbol *var, int val)
Definition codegen.c:478
t_instruction * genSLEU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:215
t_instruction * genBEQ(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:289
t_instruction * genXOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:67
t_instruction * genSNEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:227
t_instruction * genJ(t_program *program, t_label *label)
Definition codegen.c:282
t_instruction * genAND(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:57
t_instruction * genSLT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:180
t_instruction * genSUBI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:109
t_instruction * genNOP(t_program *program)
Definition codegen.c:395
t_instruction * genBGE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:313
t_instruction * genSLEIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:275
t_instruction * genLA(t_program *program, t_regID rd, t_label *label)
Definition codegen.c:357
t_instruction * genSRL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:92
t_instruction * genORI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:127
t_instruction * genREMI(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:145
t_instruction * genPrintIntSyscall(t_program *program, t_regID rs1)
Definition codegen.c:427
t_instruction * genSGEU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:195
t_instruction * genSGTIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
Definition codegen.c:263
t_instruction * genSNE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:175
t_instruction * genBLT(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:301
t_instruction * genSLL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:87
t_instruction * genSGT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:200
t_instruction * genReadIntSyscall(t_program *program, t_regID rd)
Definition codegen.c:420
t_instruction * genBLTU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:307
t_instruction * genBLE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:337
t_instruction * genBGEU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:319
t_instruction * genDIV(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:77
t_instruction * genBGT(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
Definition codegen.c:325
t_instruction * genMUL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
Definition codegen.c:72
t_instruction * genSW(t_program *program, t_regID rs2, int immediate, t_regID rs1)
Definition codegen.c:371
t_instruction * genEBREAK(t_program *program)
Definition codegen.c:407
int t_regID
Type for register identifiers.
Definition program.h:28
Program object definition and management.