commit da54634
Devine Lu Linvega
·
2024-03-29 17:25:51 +0000 UTC
parent 28b72a4
(uxnasm) More explicit resolve errors
1 files changed,
+4,
-4
+4,
-4
1@@ -97,7 +97,7 @@ findopcode(char *s)
2 else if(s[m] == 'k')
3 i |= (1 << 7);
4 else
5- return 0;
6+ return error_top("Unknown opcode mode", s);
7 m++;
8 }
9 return i;
10@@ -177,7 +177,7 @@ makemacro(char *name, FILE *f, Context *ctx)
11 if(c == 0xa) ctx->line += 1;
12 while(f && fread(&c, 1, 1, f) && c != '}') {
13 if(c == 0xa) ctx->line += 1;
14- if(c == '%') return 0;
15+ if(c == '%') return error_top("Nested macro", name);
16 if(c == '(')
17 walkcomment(f, ctx);
18 else
19@@ -331,7 +331,7 @@ resolve(void)
20 for(i = 0; i < refs_len; i++) {
21 Item *r = &refs[i], *l = findlabel(r->name);
22 Uint8 *rom = data + r->addr;
23- if(!l) return 0;
24+ if(!l) return error_top("Unknown label", r->name);
25 switch(r->rune) {
26 case '_':
27 case ',':
28@@ -401,7 +401,7 @@ main(int argc, char *argv[])
29 ptr = PAGE;
30 copy("on-reset", scope, 0);
31 if(argc == 1) return error_top("usage", "uxnasm [-v] input.tal output.rom");
32- if(scmp(argv[1], "-v", 2)) return !fprintf(stdout, "Uxnasm - Uxntal Assembler, 28 Mar 2024.\n");
33+ if(scmp(argv[1], "-v", 2)) return !fprintf(stdout, "Uxnasm - Uxntal Assembler, 29 Mar 2024.\n");
34 if(!assemble(argv[1]) || !length) return !error_top("Assembly", "Failed to assemble rom.");
35 if(!resolve()) return !error_top("Assembly", "Failed to resolve symbols.");
36 if(!build(argv[2])) return !error_top("Assembly", "Failed to build rom.");