ACSE 2.0.2
Advanced Compiler System for Education (basic documentation)
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
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
167t_instruction *genADDI(
168 t_program *program, t_regID rd, t_regID rs1, int immediate);
169
179t_instruction *genSUBI(
180 t_program *program, t_regID rd, t_regID rs1, int immediate);
181
191t_instruction *genANDI(
192 t_program *program, t_regID rd, t_regID rs1, int immediate);
193
203t_instruction *genORI(
204 t_program *program, t_regID rd, t_regID rs1, int immediate);
205
215t_instruction *genXORI(
216 t_program *program, t_regID rd, t_regID rs1, int immediate);
217
227t_instruction *genMULI(
228 t_program *program, t_regID rd, t_regID rs1, int immediate);
229
240t_instruction *genDIVI(
241 t_program *program, t_regID rd, t_regID rs1, int immediate);
242
253t_instruction *genREMI(
254 t_program *program, t_regID rd, t_regID rs1, int immediate);
255
267t_instruction *genSLLI(
268 t_program *program, t_regID rd, t_regID rs1, int immediate);
269
282t_instruction *genSRLI(
283 t_program *program, t_regID rd, t_regID rs1, int immediate);
284
297t_instruction *genSRAI(
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
354t_instruction *genSLTU(
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
381t_instruction *genSGEU(
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
408t_instruction *genSGTU(
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
435t_instruction *genSLEU(
436 t_program *program, t_regID rd, t_regID rs1, t_regID rs2);
437
439
440
443
454t_instruction *genSEQI(
455 t_program *program, t_regID rd, t_regID rs1, int immediate);
456
467t_instruction *genSNEI(
468 t_program *program, t_regID rd, t_regID rs1, int immediate);
469
481t_instruction *genSLTI(
482 t_program *program, t_regID rd, t_regID rs1, int immediate);
483
495t_instruction *genSLTIU(
496 t_program *program, t_regID rd, t_regID rs1, int immediate);
497
509t_instruction *genSGEI(
510 t_program *program, t_regID rd, t_regID rs1, int immediate);
511
523t_instruction *genSGEIU(
524 t_program *program, t_regID rd, t_regID rs1, int immediate);
525
537t_instruction *genSGTI(
538 t_program *program, t_regID rd, t_regID rs1, int immediate);
539
551t_instruction *genSGTIU(
552 t_program *program, t_regID rd, t_regID rs1, int immediate);
553
565t_instruction *genSLEI(
566 t_program *program, t_regID rd, t_regID rs1, int immediate);
567
579t_instruction *genSLEIU(
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
605t_instruction *genBEQ(
606 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
607
616t_instruction *genBNE(
617 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
618
629t_instruction *genBLT(
630 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
631
642t_instruction *genBLTU(
643 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
644
655t_instruction *genBGE(
656 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
657
668t_instruction *genBGEU(
669 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
670
681t_instruction *genBGT(
682 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
683
694t_instruction *genBGTU(
695 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
696
707t_instruction *genBLE(
708 t_program *program, t_regID rs1, t_regID rs2, t_label *label);
709
720t_instruction *genBLEU(
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
757t_instruction *genLW(
758 t_program *program, t_regID rd, int immediate, t_regID rs1);
759
773t_instruction *genSW(
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
798t_instruction *genSWGlobal(
799 t_program *program, t_regID rs1, t_label *label, t_regID rtemp);
800
802
803
806
814
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
872t_instruction *genExit0Syscall(t_program *program);
873
883t_instruction *genReadIntSyscall(t_program *program, t_regID rd);
884
894t_instruction *genPrintIntSyscall(t_program *program, t_regID rs1);
895
906t_instruction *genPrintCharSyscall(t_program *program, t_regID rs1);
907
909
910
913
919t_instruction *genNOP(t_program *program);
920
928t_instruction *genECALL(t_program *program);
929
937t_instruction *genEBREAK(t_program *program);
938
940
945#endif
t_instruction * genADD(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSGTU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genPrintCharSyscall(t_program *program, t_regID rs1)
t_instruction * genSGEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genBNE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genLW(t_program *program, t_regID rd, int immediate, t_regID rs1)
t_instruction * genSRA(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSGE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genREM(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
void genStoreRegisterToVariable(t_program *program, t_symbol *var, t_regID reg)
t_instruction * genSLTI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_regID genLoadVariable(t_program *program, t_symbol *var)
t_instruction * genXORI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genECALL(t_program *program)
t_instruction * genBGTU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genSLE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSWGlobal(t_program *program, t_regID rs1, t_label *label, t_regID rtemp)
t_instruction * genANDI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSUB(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
void genStoreRegisterToArrayElement(t_program *program, t_symbol *array, t_regID rIdx, t_regID rVal)
void genStoreConstantToArrayElement(t_program *program, t_symbol *array, t_regID rIdx, int val)
t_instruction * genSEQ(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSLTU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genLI(t_program *program, t_regID rd, int immediate)
t_instruction * genSRLI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_regID genLoadArrayElement(t_program *program, t_symbol *array, t_regID rIdx)
t_instruction * genBLEU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSGEIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genMULI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genDIVI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genExit0Syscall(t_program *program)
t_instruction * genSGTI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSLTIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genLWGlobal(t_program *program, t_regID rd, t_label *label)
t_instruction * genSRAI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSEQI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genADDI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSLLI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSLEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
void genStoreConstantToVariable(t_program *program, t_symbol *var, int val)
t_instruction * genSLEU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genBEQ(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genXOR(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSNEI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genJ(t_program *program, t_label *label)
t_instruction * genAND(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSLT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSUBI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genNOP(t_program *program)
t_instruction * genBGE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genSLEIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genLA(t_program *program, t_regID rd, t_label *label)
t_instruction * genSRL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genORI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genREMI(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genPrintIntSyscall(t_program *program, t_regID rs1)
t_instruction * genSGEU(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSGTIU(t_program *program, t_regID rd, t_regID rs1, int immediate)
t_instruction * genSNE(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genBLT(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genSLL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSGT(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genReadIntSyscall(t_program *program, t_regID rd)
t_instruction * genBLTU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genBLE(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genBGEU(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genDIV(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genBGT(t_program *program, t_regID rs1, t_regID rs2, t_label *label)
t_instruction * genMUL(t_program *program, t_regID rd, t_regID rs1, t_regID rs2)
t_instruction * genSW(t_program *program, t_regID rs2, int immediate, t_regID rs1)
t_instruction * genEBREAK(t_program *program)
int t_regID
Type for register identifiers.
Definition program.h:28
Program object definition and management.