43 lines
871 B
C
43 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(&argc, &argv, &env);
|
|
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]);
|
|
|
|
//parse();
|
|
|
|
elf_executable();
|
|
symbol entry_point = compile();
|
|
finish_executable(entry_point);
|
|
|
|
close_files();
|
|
return 0;
|
|
}
|