From 92855ebb3e42669ccbcbac8bfe13d30b6e6fe894 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Mon, 23 Oct 2023 16:53:50 +0100 Subject: Starting development on assembly language --- asm/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 asm/main.c (limited to 'asm/main.c') diff --git a/asm/main.c b/asm/main.c new file mode 100644 index 0000000..3f6209b --- /dev/null +++ b/asm/main.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2023 Aryadev Chavali + + * You may distribute and modify this code under the terms of the + * GPLv2 license. You should have received a copy of the GPLv2 + * license with this file. If not, please write to: + * aryadev@aryadevchavali.com. + + * Created: 2023-10-23 + * Author: Aryadev Chavali + * Description: Assembly source code compiler, targeting OVM + */ + +#include + +#include + +typedef enum TokenType +{ + TOKEN_WHITESPACE, + TOKEN_BYTE_LITERAL, + TOKEN_HWORD_LITERAL, + TOKEN_WORD_LITERAL, + TOKEN_SYMBOL, +} token_type_t; + +typedef struct +{ + token_type_t type; + char *str; + size_t str_size; +} token_t; + +// We can use darr_read_file as an in memory buffer of source code +// Then just create new darr's for tokens, then instructions. Then +// emit bytecode in the end. + +int main(void) +{ + FILE *fp = fopen("main.asm", "rb"); + darr_t darr = darr_read_file(fp); + fclose(fp); + darr.data[darr.available - 1] = '\0'; + printf("%lu/%lu\n%s\n", darr.used, darr.available, darr.data); + free(darr.data); + return 0; +} -- cgit v1.2.3-13-gbd6f