diff options
author | kugwa <kugwa2000@gmail.com> | 2015-12-31 18:38:02 +0800 |
---|---|---|
committer | kugwa <kugwa2000@gmail.com> | 2015-12-31 18:40:06 +0800 |
commit | 8723485ffe647c10ac97d8dc341dfa601e742bcc (patch) | |
tree | e51ec4f148c79afa61fd932c7a58abf17a4448b6 | |
parent | be8b0c2eb7b040f4bf9338bfdeb72b794f56ac9a (diff) | |
download | compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar.gz compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar.bz2 compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar.lz compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar.xz compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.tar.zst compiler2015-8723485ffe647c10ac97d8dc341dfa601e742bcc.zip |
Initialize the register pool
additional changes:
TODO: ccmmc_register_fini()
-rw-r--r-- | src/code-generation.c | 1 | ||||
-rw-r--r-- | src/register.c | 5 | ||||
-rw-r--r-- | src/register.h | 1 | ||||
-rw-r--r-- | src/state.h | 2 |
4 files changed, 9 insertions, 0 deletions
diff --git a/src/code-generation.c b/src/code-generation.c index 7709d59..f1cac15 100644 --- a/src/code-generation.c +++ b/src/code-generation.c @@ -193,6 +193,7 @@ void ccmmc_code_generation(CcmmcState *state) state->table->this_scope = NULL; state->table->current = NULL; ccmmc_symbol_table_reopen_scope(state->table); + state->reg_pool = ccmmc_register_init(); generate_program(state); } diff --git a/src/register.c b/src/register.c index 82631f8..8f34255 100644 --- a/src/register.c +++ b/src/register.c @@ -115,3 +115,8 @@ void ccmmc_register_caller_save(CcmmcRegPool *pool) void ccmmc_register_caller_load(CcmmcRegPool *pool) { } + +void ccmmc_register_fini(CcmmcRegPool *pool) +{ + // TODO: free register pool +} diff --git a/src/register.h b/src/register.h index 2f52e6d..52cab17 100644 --- a/src/register.h +++ b/src/register.h @@ -32,6 +32,7 @@ void ccmmc_register_free (CcmmcRegPool *pool, CcmmcTmp *tmp); void ccmmc_register_caller_save (CcmmcRegPool *pool); void ccmmc_register_caller_load (CcmmcRegPool *pool); +void ccmmc_register_fini (CcmmcRegPool *pool); #endif // vim: set sw=4 ts=4 sts=4 et: diff --git a/src/state.h b/src/state.h index 516b7fc..5071342 100644 --- a/src/state.h +++ b/src/state.h @@ -3,6 +3,7 @@ #include "ast.h" #include "symbol-table.h" +#include "register.h" #include <stdbool.h> #include <stddef.h> @@ -14,6 +15,7 @@ typedef struct CcmmcState_struct { CcmmcSymbolTable *table; size_t line_number; FILE *asm_output; + CcmmcRegPool *reg_pool; } CcmmcState; void ccmmc_state_init (CcmmcState *state); |