aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/debug.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-24 09:52:09 +0200
committerBad Diode <bd@badd10de.dev>2021-10-24 09:52:09 +0200
commitb743e03fc6042e3e2d55cfa0387c092824de64c5 (patch)
tree1c74213017e20fc5bf675f571de2a264cf104cd3 /src/bytecode/debug.h
parentf372586069ea0a92db65bc90cf844c1a35187430 (diff)
downloadbdl-b743e03fc6042e3e2d55cfa0387c092824de64c5.tar.gz
bdl-b743e03fc6042e3e2d55cfa0387c092824de64c5.zip
Add print/display/newline ops
Diffstat (limited to 'src/bytecode/debug.h')
-rwxr-xr-xsrc/bytecode/debug.h35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/bytecode/debug.h b/src/bytecode/debug.h
index 42b5b93..52cf431 100755
--- a/src/bytecode/debug.h
+++ b/src/bytecode/debug.h
@@ -6,6 +6,33 @@
6void disassemble_chunk(Chunk *chunk, const char *name); 6void disassemble_chunk(Chunk *chunk, const char *name);
7size_t disassemble_instruction(Chunk *chunk, size_t offset); 7size_t disassemble_instruction(Chunk *chunk, size_t offset);
8 8
9static const char* ops_str[] = {
10 // Load/store ops.
11 [OP_CONSTANT] = "OP_CONSTANT",
12 // Arithmetic ops.
13 [OP_SUM] = "OP_SUM",
14 [OP_SUB] = "OP_SUB",
15 [OP_MUL] = "OP_MUL",
16 [OP_DIV] = "OP_DIV",
17 [OP_MOD] = "OP_MOD",
18 // Logic ops.
19 [OP_NOT] = "OP_NOT",
20 [OP_AND] = "OP_AND",
21 [OP_OR] = "OP_OR",
22 // Numerical comparison ops.
23 [OP_EQUAL] = "OP_EQUAL",
24 [OP_LESS] = "OP_LESS",
25 [OP_GREATER] = "OP_GREATER",
26 [OP_LESS_EQUAL] = "OP_LESS_EQUAL",
27 [OP_GREATER_EQUAL] = "OP_GREATER_EQUAL",
28 // Display ops.
29 [OP_DISPLAY] = "OP_DISPLAY",
30 [OP_PRINT] = "OP_PRINT",
31 [OP_NEWLINE] = "OP_NEWLINE",
32 // Return.
33 [OP_RETURN] = "OP_RETURN",
34};
35
9void 36void
10disassemble_chunk(Chunk *chunk, const char *name) { 37disassemble_chunk(Chunk *chunk, const char *name) {
11 printf("== %s ==\n", name); 38 printf("== %s ==\n", name);
@@ -43,14 +70,8 @@ disassemble_instruction(Chunk *chunk, size_t offset) {
43 printf("\n"); 70 printf("\n");
44 return offset + 2; 71 return offset + 2;
45 } break; 72 } break;
46 case OP_SUM: { printf("OP_SUM\n"); return offset + 1; } break;
47 case OP_SUB: { printf("OP_SUB\n"); return offset + 1; } break;
48 case OP_MUL: { printf("OP_MUL\n"); return offset + 1; } break;
49 case OP_DIV: { printf("OP_DIV\n"); return offset + 1; } break;
50 case OP_MOD: { printf("OP_MOD\n"); return offset + 1; } break;
51 case OP_RETURN: { printf("OP_RETURN\n"); return offset + 1; } break;
52 default: { 73 default: {
53 printf("Unknown OP: %d\n", instruction); 74 printf("%s\n", ops_str[instruction]);
54 return offset + 1; 75 return offset + 1;
55 } break; 76 } break;
56 } 77 }