diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 16:53:50 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 16:53:50 +0100 |
commit | 92855ebb3e42669ccbcbac8bfe13d30b6e6fe894 (patch) | |
tree | 1721ad5f14e3f75e99de4969851b89c7a6ec9044 /asm/main.c | |
parent | 42ac28d44ac7e1f102e9ba37fa91923e822e47df (diff) | |
download | ovm-92855ebb3e42669ccbcbac8bfe13d30b6e6fe894.tar.gz ovm-92855ebb3e42669ccbcbac8bfe13d30b6e6fe894.tar.bz2 ovm-92855ebb3e42669ccbcbac8bfe13d30b6e6fe894.zip |
Starting development on assembly language
Diffstat (limited to 'asm/main.c')
-rw-r--r-- | asm/main.c | 46 |
1 files changed, 46 insertions, 0 deletions
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 <stdio.h> + +#include <lib/darr.h> + +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; +} |