pass-lang/src/main.c

42 lines
871 B
C

#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#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 <output file> <source file>\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;
}