summaryrefslogtreecommitdiff
path: root/src/gas_assembly_generator.c
diff options
context:
space:
mode:
authorCarlos Maniero <carlosmaniero@gmail.com>2023-04-26 01:57:42 -0300
committerJohnny Richard <johnny@johnnyrichard.com>2023-04-26 09:11:47 +0200
commitcd77ac7997fa956c1d67ef91cde056e817aa16c7 (patch)
treef42ab962e225a90507a25d253d39d94095739cc9 /src/gas_assembly_generator.c
parentdddec15f6ac62311b4980f0de9e6893da00481ae (diff)
ast: Include a Binary Operation kind enum
The AST was using a string view to distinguish the operation kind. An enum was created for this purpose simplifying code generation. Signed-off-by: Carlos Maniero <carlosmaniero@gmail.com> Reviewed-by: Johnny Richard <johnny@johnnyrichar.com>
Diffstat (limited to 'src/gas_assembly_generator.c')
-rw-r--r--src/gas_assembly_generator.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gas_assembly_generator.c b/src/gas_assembly_generator.c
index 00897fd..bf98255 100644
--- a/src/gas_assembly_generator.c
+++ b/src/gas_assembly_generator.c
@@ -100,27 +100,26 @@ gas_assembly_generator_binary_operation(ast_visitor_t *visitor, ast_binary_opera
fprintf(gen->out, " pop %%rcx\n");
- if (string_view_eq(binary_operation->op, string_view_from_str("+"))) {
+ if (binary_operation->kind == AST_BINOP_ADITION) {
fprintf(gen->out, " add %%rcx, %%rax\n");
return;
}
- if (string_view_eq(binary_operation->op, string_view_from_str("-"))) {
+ if (binary_operation->kind == AST_BINOP_SUBTRACTION) {
fprintf(gen->out, " sub %%rcx, %%rax\n");
return;
}
- if (string_view_eq(binary_operation->op, string_view_from_str("*"))) {
+ if (binary_operation->kind == AST_BINOP_MULTIPLICATION) {
fprintf(gen->out, " mul %%rcx\n");
return;
}
- if (string_view_eq(binary_operation->op, string_view_from_str("/"))) {
+ if (binary_operation->kind == AST_BINOP_DIVISION) {
fprintf(gen->out, " xor %%rdx, %%rdx\n");
fprintf(gen->out, " div %%rcx\n");
return;
}
- fprintf(stderr, "no strategy defined for: " SVFMT "\n", SVARG(&binary_operation->op));
- assert(false);
+ assert(false && "No strategy defined for binary operation");
}