diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-24 09:52:09 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-24 09:52:09 +0200 |
commit | b743e03fc6042e3e2d55cfa0387c092824de64c5 (patch) | |
tree | 1c74213017e20fc5bf675f571de2a264cf104cd3 /src/bytecode/debug.h | |
parent | f372586069ea0a92db65bc90cf844c1a35187430 (diff) | |
download | bdl-b743e03fc6042e3e2d55cfa0387c092824de64c5.tar.gz bdl-b743e03fc6042e3e2d55cfa0387c092824de64c5.zip |
Add print/display/newline ops
Diffstat (limited to 'src/bytecode/debug.h')
-rwxr-xr-x | src/bytecode/debug.h | 35 |
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 @@ | |||
6 | void disassemble_chunk(Chunk *chunk, const char *name); | 6 | void disassemble_chunk(Chunk *chunk, const char *name); |
7 | size_t disassemble_instruction(Chunk *chunk, size_t offset); | 7 | size_t disassemble_instruction(Chunk *chunk, size_t offset); |
8 | 8 | ||
9 | static 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 | |||
9 | void | 36 | void |
10 | disassemble_chunk(Chunk *chunk, const char *name) { | 37 | disassemble_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 | } |