diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2023-05-17 15:31:24 +0200 |
---|---|---|
committer | Johnny Richard <johnny@johnnyrichard.com> | 2023-05-17 15:31:24 +0200 |
commit | 15196aa56339d34af9f74b019e6aeff5816e8dcc (patch) | |
tree | ffe7d6ec48bc6018b5eea7e9ef573cd1bbd57c2f /src/gas_assembly_generator.h | |
parent | ad54ee1182b1549880eddc8b1969d3992d9f7f1d (diff) | |
parent | ea7f65fe1250be8f49edcaaedd3410aed1401648 (diff) |
Merge commit 'ea7f65fe1250be8f49edcaaedd3410aed1401648' of https://git.sr.ht/~carlosmaniero/pipac-clone
Diffstat (limited to 'src/gas_assembly_generator.h')
-rw-r--r-- | src/gas_assembly_generator.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gas_assembly_generator.h b/src/gas_assembly_generator.h index 92972f9..26aa87b 100644 --- a/src/gas_assembly_generator.h +++ b/src/gas_assembly_generator.h @@ -26,12 +26,14 @@ typedef enum evaluation_result_kind_t EVALUATION_RESULT_VOID, EVALUATION_RESULT_ON_RAX, EVALUATION_RESULT_ON_STACK, - EVALUATION_RESULT_AS_LITERAL_INTEGER + EVALUATION_RESULT_AS_LITERAL_INTEGER, + EVALUATION_RESULT_AS_LITERAL_BOOL } evaluation_result_kind_t; typedef union evaluation_result_data_t { int64_t literal_int; + bool literal_bool; int stack_offset; } evaluation_result_data_t; @@ -46,6 +48,8 @@ typedef struct gas_assembly_generator_t FILE *stream; vector_t *refs; int stack_offset; + uint64_t counter_label_index; + uint64_t return_label_index; evaluation_result_t latest_evaluation; } gas_assembly_generator_t; @@ -55,4 +59,10 @@ gas_assembly_generator_init(gas_assembly_generator_t *gen, FILE *stream); void gas_assembly_generator_compile(gas_assembly_generator_t *gen, ast_node_t *ast); +void +gas_assembly_generator_compile_ns(gas_assembly_generator_t *gen, ast_namespace_t *ns); + +void +gas_assembly_generator_compile_linux_main(gas_assembly_generator_t *gen, ast_node_t *func); + #endif /* GAS_ASSEMBLY_GENERATOR_H */ |