summaryrefslogtreecommitdiff
path: root/src/gas_assembly_generator.h
diff options
context:
space:
mode:
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 */