diff options
| author | Carson Fleming <cflems@cflems.net> | 2026-03-28 17:05:37 -1000 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2026-03-28 17:05:37 -1000 |
| commit | b4d7305730606126d74862ca472a3efed964c2d8 (patch) | |
| tree | 933ee0e11e30ec03181aba9051795513b94b0421 /main.c | |
| parent | 0dc409ab0967d9973f36c138825067462b9a216f (diff) | |
| download | ccc-b4d7305730606126d74862ca472a3efed964c2d8.tar.gz | |
rehashing and size tracking corrections
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 25 |
1 files changed, 20 insertions, 5 deletions
@@ -41,13 +41,28 @@ void test_parser(int argc, char** argv) { for (int i = 1; i < argc; i++) { struct root_node* root = parse(argv[i]); unsigned int fn_sz = strlen(argv[i]); - char outfile[fn_sz + 1]; - strcpy(outfile, argv[i]); - outfile[fn_sz - 1] = 's'; - outfile[fn_sz] = 0; + char asm_file[fn_sz + 1]; + strcpy(asm_file, argv[i]); + asm_file[fn_sz - 1] = 's'; + asm_file[fn_sz] = 0; - emit_code(root, outfile); + emit_code(root, asm_file); ast_destroy(root); + + char obj_file[fn_sz + 1]; + strcpy(obj_file, argv[i]); + obj_file[fn_sz - 1] = 'o'; + obj_file[fn_sz] = 0; + + char cmd_buffer[2*fn_sz + 20]; + snprintf( + cmd_buffer, + sizeof(cmd_buffer), + "nasm -f elf64 %s -o %s", + asm_file, + obj_file); + int status = system(cmd_buffer); + if (status != 0) exit(status); } } |
