Starting to work on macro expansion.
h3rald h3rald@h3rald.com
Fri, 28 Nov 2025 10:19:26 +0100
1 files changed,
27 insertions(+),
3 deletions(-)
jump to
M
xywasm.c
→
xywasm.c
@@ -525,10 +525,34 @@ printf("Symbol:\t\t%s\n", token);
token_type = TOKEN_TYPE_SYMBOL; if (!directive) { - printf("-> Ref:\t%s\n", token); - if (ref(ctx, token) != 0) + int i = find_symbol(token); + if (i != -1) { - return -1; + xyw_symbol *sym = &symbols[i]; + if (sym->type == SYMBOL_TYPE_MACRO) + { + // TODO: Expand macro + } + else if (sym->type == SYMBOL_TYPE_LABEL) + { + // Push label address + push(sym->address); + } + else if (sym->type == SYMBOL_TYPE_REF) + { + // Should not happen + token_error("Internal error: symbol is a reference"); + return -1; + } + } + else + { + // Store reference to be resolved later + printf("-> Ref:\t%s\n", token); + if (ref(ctx, token) != 0) + { + return -1; + } } } return 0;