summaryrefslogtreecommitdiff
path: root/src/gas_assembly_generator.h
diff options
context:
space:
mode:
authorJohnny Richard <johnny@johnnyrichard.com>2023-05-17 15:31:24 +0200
committerJohnny Richard <johnny@johnnyrichard.com>2023-05-17 15:31:24 +0200
commit15196aa56339d34af9f74b019e6aeff5816e8dcc (patch)
treeffe7d6ec48bc6018b5eea7e9ef573cd1bbd57c2f /src/gas_assembly_generator.h
parentad54ee1182b1549880eddc8b1969d3992d9f7f1d (diff)
parentea7f65fe1250be8f49edcaaedd3410aed1401648 (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.h12
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 */