summaryrefslogtreecommitdiff
path: root/lexer.c
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2020-08-17 20:37:44 -0400
committermrb0nk500 <b0nk@b0nk.xyz>2020-08-17 20:37:44 -0400
commitd31aed21b27fbda68abe088d657ba18455607cc4 (patch)
tree484f16e64f1fa4bcbdad7eb3242ec95e3ca9f5be /lexer.c
parent7e57608dff1e768d2ee5d6b6a28a319865530ed0 (diff)
- Fixed some bugs in the emulator's assembler.
- Simplified the effective address functions. - Made SuBEditor a bit faster. - JSR, and RTS now support using the RS prefix, which is used to specify the return address size, with an RS prefix of 0 being a return address size of 64 bits, rather than 8 bits.
Diffstat (limited to 'lexer.c')
-rw-r--r--lexer.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/lexer.c b/lexer.c
index 63eef47..e315155 100644
--- a/lexer.c
+++ b/lexer.c
@@ -653,6 +653,22 @@ uint64_t lex(char *str, uint64_t address, uint16_t bline, uint8_t dbg) {
}
if (i) {
l->tok = tokens;
+ token *tok = tokens;
+ if (tok->id == TOK_SYM && tok->next) {
+ symbol *s = tok->sym;
+ for (; tok; tok = tok->next) {
+ switch (tok->id) {
+ case TOK_HEX :
+ case TOK_BIN :
+ case TOK_DEC :
+ case TOK_CHAR:
+ case TOK_EXPR:
+ s->val = get_val(tok, address, 3, dbg);
+ tok = skip_expr(tok, dbg);
+ break;
+ }
+ }
+ }
tokens = NULL;
last_tok = NULL;
bytecount dummy;