summaryrefslogtreecommitdiff
path: root/src/gas_assembly_generator.h
diff options
context:
space:
mode:
authorCarlos Maniero <carlos@maniero.me>2023-05-10 00:20:00 -0300
committerCarlos Maniero <carlos@maniero.me>2023-05-10 12:15:01 -0300
commit5de2e1fd9f426348127a66d2c51c300cb90cc3a4 (patch)
tree4dfa61999777227ca35a4d9d092f41996af6d26e /src/gas_assembly_generator.h
parentad54ee1182b1549880eddc8b1969d3992d9f7f1d (diff)
gas: Generate code for if statement
If statements are now working, the only exception is for the comparators || and && that will be addressed in a further commit. Checks tested: fn main(): i32 { let n: i32 = 11; if (n == 11) { if n != 12 { if n < 12 { if n <= 11 { if n > 10 { if n >= 11 { return 42; } } } } } } return n; } To compile the && and || a precedence issue must be addressed: they must have the highest precedence, witch is not working now: 1 == 2 || 3 != 2 The or should be the higher level of the tree in the example above. Signed-off-by: Carlos Maniero <carlos@maniero.me>
Diffstat (limited to 'src/gas_assembly_generator.h')
-rw-r--r--src/gas_assembly_generator.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gas_assembly_generator.h b/src/gas_assembly_generator.h
index 92972f9..3d9a43c 100644
--- a/src/gas_assembly_generator.h
+++ b/src/gas_assembly_generator.h
@@ -46,6 +46,7 @@ typedef struct gas_assembly_generator_t
FILE *stream;
vector_t *refs;
int stack_offset;
+ uint64_t label_counter;
evaluation_result_t latest_evaluation;
} gas_assembly_generator_t;