From 0ff948af3d65150f44c9fe801ada806ce0637fe1 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Mon, 9 Sep 2024 20:48:08 -0400 Subject: relocation table hell --- masm/asm.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 masm/asm.c (limited to 'masm/asm.c') diff --git a/masm/asm.c b/masm/asm.c new file mode 100644 index 0000000..6e2a56c --- /dev/null +++ b/masm/asm.c @@ -0,0 +1,41 @@ +#include +#include + +#include "asm.h" + +int assembler_init(struct assembler *asm, const char *path) +{ + if (lexer_init(path, &asm->lexer)) + return M_ERROR; + + if (parser_init(&asm->lexer, &asm->parser)) { + lexer_free(&asm->lexer); + return M_ERROR; + } + + if (strtbl_init(&asm->shstr_tbl)) { + parser_free(&asm->parser); + lexer_free(&asm->lexer); + return M_ERROR; + } + + if (strtbl_init(&asm->str_tbl)) { + strtbl_free(&asm->shstr_tbl); + parser_free(&asm->parser); + lexer_free(&asm->lexer); + return M_ERROR; + } + + asm->meta = NULL; + + return M_SUCCESS; +} + +void assembler_free(struct assembler *asm) +{ + strtbl_free(&asm->str_tbl); + strtbl_free(&asm->shstr_tbl); + parser_free(&asm->parser); + lexer_free(&asm->lexer); + free(asm->meta); +} -- cgit v1.2.3-freya