summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkugwa <kugwa2000@gmail.com>2015-12-31 18:38:02 +0800
committerkugwa <kugwa2000@gmail.com>2015-12-31 18:40:06 +0800
commit8723485ffe647c10ac97d8dc341dfa601e742bcc (patch)
treee51ec4f148c79afa61fd932c7a58abf17a4448b6
parentbe8b0c2eb7b040f4bf9338bfdeb72b794f56ac9a (diff)
downloadcompiler2015-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.c1
-rw-r--r--src/register.c5
-rw-r--r--src/register.h1
-rw-r--r--src/state.h2
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);