#include #include #include #include #include "format.h" #include "io.h" #include "ir.h" #include "parse.h" #define ELF_HEADER_SIZE 0xb0 symbol compile(void) { symbol entry_point = new_symbol(); define_executable_symbol(entry_point); var argc, argv, env; init_ir(&argc, &argv, &env); parse(); var a = lit(52); var b = lit(10); var exit_code = sub(a, b); var sys_exit = lit(60); var args[2] = { sys_exit, exit_code }; syscall(2, args); return entry_point; } int main(int argc, char** argv) { if (argc != 3) { fprintf(stderr, "usage: %s \n", argv[0]); exit(1); } open_files(argv[2], argv[1]); elf_executable(); symbol entry_point = compile(); finish_executable(entry_point); close_files(); return 0; }