aboutsummaryrefslogtreecommitdiff
path: root/src/generator.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/generator.c')
-rw-r--r--src/generator.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/generator.c b/src/generator.c
index e547a23..88f32d7 100644
--- a/src/generator.c
+++ b/src/generator.c
@@ -13,7 +13,11 @@ void gen_prologue() {
13 printf("extern printf\n"); 13 printf("extern printf\n");
14 printf("section .data\n"); 14 printf("section .data\n");
15 printf("format_int db \"%%d\",10,0\n\n"); 15 printf("format_int db \"%%d\",10,0\n\n");
16 printf("section .bss\nsection .text\n\nglobal _start\n"); 16 printf("section .bss\n");
17}
18void gen_prologue_continue(){
19 printf("globals: resq %d\n", nb_globals);
20 printf("section .text\n\nglobal _start\n");
17 printf("print: ;print needs an argument in rax\n"); 21 printf("print: ;print needs an argument in rax\n");
18 printf("push rbp\n"); 22 printf("push rbp\n");
19 printf("mov rbp, rsp\n"); 23 printf("mov rbp, rsp\n");
@@ -28,7 +32,6 @@ void gen_prologue() {
28 printf("\n_start:\n"); 32 printf("\n_start:\n");
29 printf("push rbp\nmov rbp, rsp\n\n"); 33 printf("push rbp\nmov rbp, rsp\n\n");
30} 34}
31
32void gen_const_declaration() { 35void gen_const_declaration() {
33 printf("mov rax,60 \n"); 36 printf("mov rax,60 \n");
34 printf("mov rdi,0 \n"); 37 printf("mov rdi,0 \n");
@@ -43,13 +46,14 @@ void gen_declaration(const char name[], int type, Scope scope) {
43 switch (scope) { 46 switch (scope) {
44 case GLOBAL: 47 case GLOBAL:
45 glo_addVar(name, type); 48 glo_addVar(name, type);
49 nb_globals++;
46 break; 50 break;
47 case LOCAL: 51 case LOCAL:
48 loc_addVar(name, type); 52 loc_addVar(name, type);
53 printf("push 0\n");
49 break; 54 break;
50 } 55 }
51 56
52 printf("push 0\n");
53} 57}
54 58
55// ----- READ AND PRINT FUNCTIONS ----- 59// ----- READ AND PRINT FUNCTIONS -----