Add x64 emitter tests

This commit is contained in:
Krzosa Karol
2026-05-23 08:35:43 +02:00
parent a0adc03bcb
commit 0058355611
4 changed files with 25 additions and 54 deletions

View File

@@ -32,3 +32,21 @@ void emit_program(FILE *file, Ast *n) {
emit_expr(file, n);
fprintf(file, " ret\n");
}
void emit_expr_test(char *expr, int value) {
Token_Array tokens = lex_file("expr", expr, strlen(expr));
Parser parser = {tokens.data, tokens.data + tokens.len};
Ast *ast = parse_expr(&parser, 0);
FILE *file = fopen("out.s", "w");
emit_program(file, ast);
fclose(file);
int result = system("clang out.s -o out");
assert(result == 0);
result = system("./out");
assert(WEXITSTATUS(result) == value);
}
void emit_x64_test(void) {
emit_expr_test("10+5*2-10", 10+5*2-10);
printf("x64 tests passed\n");
}