diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/generator.c | 5 | ||||
-rw-r--r-- | src/generator.h | 2 | ||||
-rw-r--r-- | src/tpc.y | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/generator.c b/src/generator.c index 601f482..bbb2af5 100644 --- a/src/generator.c +++ b/src/generator.c | |||
@@ -78,7 +78,7 @@ void gen_prologue_continue(int *bss_done) { | |||
78 | *bss_done = 1; | 78 | *bss_done = 1; |
79 | } | 79 | } |
80 | 80 | ||
81 | void gen_const_declaration() { | 81 | void gen_epilogue() { |
82 | fprintf(output, "\n_start:\n"); | 82 | fprintf(output, "\n_start:\n"); |
83 | fprintf(output, "push rbp\nmov rbp, rsp\n\n"); | 83 | fprintf(output, "push rbp\nmov rbp, rsp\n\n"); |
84 | fprintf(output, "call main\n"); | 84 | fprintf(output, "call main\n"); |
@@ -91,6 +91,9 @@ void gen_const_declaration() { | |||
91 | loc_display_table(); | 91 | loc_display_table(); |
92 | fprintf(output, ";function table\n"); | 92 | fprintf(output, ";function table\n"); |
93 | fun_display_table(); | 93 | fun_display_table(); |
94 | |||
95 | // require a main function | ||
96 | fun_lookup("main", 0); | ||
94 | } | 97 | } |
95 | 98 | ||
96 | void gen_const(const char name[], int value, Scope scope) { | 99 | void gen_const(const char name[], int value, Scope scope) { |
diff --git a/src/generator.h b/src/generator.h index 20a83f9..9d6dd65 100644 --- a/src/generator.h +++ b/src/generator.h | |||
@@ -16,7 +16,7 @@ FILE *output; | |||
16 | 16 | ||
17 | void gen_prologue(); | 17 | void gen_prologue(); |
18 | void gen_prologue_continue(int *bss_done); | 18 | void gen_prologue_continue(int *bss_done); |
19 | void gen_const_declaration(); | 19 | void gen_epilogue(); |
20 | void gen_const(const char name[], int value, Scope scope); | 20 | void gen_const(const char name[], int value, Scope scope); |
21 | 21 | ||
22 | Type gen_function_declaration(const char name[], int return_type); | 22 | Type gen_function_declaration(const char name[], int return_type); |
@@ -58,7 +58,7 @@ static char fname[64]; | |||
58 | 58 | ||
59 | %% | 59 | %% |
60 | Prog: { gen_prologue(); } | 60 | Prog: { gen_prologue(); } |
61 | DeclConsts DeclVars DeclFoncts { gen_const_declaration(); } | 61 | DeclConsts DeclVars DeclFoncts { gen_epilogue(); } |
62 | ; | 62 | ; |
63 | DeclConsts: | 63 | DeclConsts: |
64 | DeclConsts CONST ListConst ';' | 64 | DeclConsts CONST ListConst ';' |