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.");