all repos — xyw @ f83a7dbb763d4fb93754290349ed0ee3954daf65

A minimal virtual machine and assembler for terminals.

Starting to work on macro expansion.
h3rald h3rald@h3rald.com
Fri, 28 Nov 2025 10:19:26 +0100
commit

f83a7dbb763d4fb93754290349ed0ee3954daf65

parent

7936b8ad7c9999ad9a7f8796dbc5714b8ecc84a3

1 files changed, 27 insertions(+), 3 deletions(-)

jump to
M xywasm.cxywasm.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;