summaryrefslogtreecommitdiff
path: root/src/pipac.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pipac.c')
-rw-r--r--src/pipac.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/pipac.c b/src/pipac.c
index 6e6df9e..e56d8a1 100644
--- a/src/pipac.c
+++ b/src/pipac.c
@@ -21,21 +21,15 @@
#include "lexer.h"
#include "parser.h"
#include "string_view.h"
+#include "gas_assembly_generator.h"
void
generate_gas_x86_64_linux(ast_function_t *func)
{
- if (!string_view_eq(func->name, string_view_from_str("main"))) {
- fprintf(stderr, "[ERROR]: no main function has been defined!\n");
- exit(EXIT_FAILURE);
- }
+ gas_assembly_generator_t gen;
+ gas_assembly_generator_init(&gen, stdout);
- printf(".global _start\n");
- printf(".text\n");
- printf("_start:\n");
- printf(" mov $1, %%al\n");
- printf(" mov $%d, %%ebx\n", func->body.number);
- printf(" int $0x80\n");
+ ast_visitor_visit(&gen, func);
}
void