From eba603659a6e4e8374b1daf955f7b654a06c78fc Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Wed, 15 Apr 2015 23:07:44 -0500 Subject: [PATCH] Refactor out symbol table init; stop unused arg warnings for stubs. --- src/assembler.c | 8 ++++---- src/assembler/state.c | 16 ++++++++++++++++ src/assembler/state.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/assembler.c b/src/assembler.c index 378c076..d42e6be 100644 --- a/src/assembler.c +++ b/src/assembler.c @@ -24,6 +24,7 @@ static ErrorInfo* tokenize(AssemblerState *state) // verify no instructions clash with header offset // if rom size is set, verify nothing overflows + (void) state; return NULL; } @@ -45,6 +46,7 @@ static ErrorInfo* resolve_defaults(AssemblerState *state) // if (!state.header.rom_size) // set to actual rom size + (void) state; return NULL; } @@ -58,6 +60,7 @@ static ErrorInfo* resolve_symbols(AssemblerState *state) { // TODO + (void) state; return NULL; } @@ -98,10 +101,7 @@ size_t assemble(const LineBuffer *source, uint8_t **binary_ptr, ErrorInfo **ei_p if ((error_info = preprocess(&state, source))) goto error; - if (!(state.symtable = malloc(sizeof(ASMSymbolTable)))) - OUT_OF_MEMORY() - for (size_t bucket = 0; bucket < SYMBOL_TABLE_BUCKETS; bucket++) - state.symtable->buckets[bucket] = NULL; + asm_symtable_init(&state.symtable); if ((error_info = tokenize(&state))) goto error; diff --git a/src/assembler/state.c b/src/assembler/state.c index 876549f..5f0776a 100644 --- a/src/assembler/state.c +++ b/src/assembler/state.c @@ -5,6 +5,7 @@ #include "state.h" #include "io.h" +#include "../logging.h" #include "../util.h" #define DEFAULT_HEADER_OFFSET 0x7FF0 @@ -31,6 +32,21 @@ void state_init(AssemblerState *state) } /* + Initialize an ASMSymbolTable and place it in *symtable_ptr. +*/ +void asm_symtable_init(ASMSymbolTable **symtable_ptr) +{ + ASMSymbolTable *symtable; + if (!(symtable = malloc(sizeof(ASMSymbolTable)))) + OUT_OF_MEMORY() + + for (size_t bucket = 0; bucket < SYMBOL_TABLE_BUCKETS; bucket++) + symtable->buckets[bucket] = NULL; + + *symtable_ptr = symtable; +} + +/* Deallocate an ASMLine list. */ void asm_lines_free(ASMLine *line) diff --git a/src/assembler/state.h b/src/assembler/state.h index 6203c69..0202aa7 100644 --- a/src/assembler/state.h +++ b/src/assembler/state.h @@ -71,6 +71,7 @@ typedef struct { /* Functions */ void state_init(AssemblerState*); +void asm_symtable_init(ASMSymbolTable**); void asm_lines_free(ASMLine*); void asm_includes_free(ASMInclude*); void asm_instructions_free(ASMInstruction*);