Skip to content
Snippets Groups Projects
main.c 869 B
Newer Older
Michal Vlasák's avatar
Michal Vlasák committed
#include <stdio.h>
#include <assert.h>
Michal Vlasák's avatar
Michal Vlasák committed

#include "arena.h"
#include "parser.h"

#include "jit.h"

Michal Vlasák's avatar
Michal Vlasák committed
int main(int argc, char **argv) {
#ifdef _WIN32
	// Set standard output mode to "binary" on Windows.
	// https://nullprogram.com/blog/2021/12/30/
	int _setmode(int, int);
	_setmode(1, 0x8000);
#endif

Michal Vlasák's avatar
Michal Vlasák committed
	if (argc < 2) {
		fprintf(stderr, "Error: expected at least one argument\n");
Michal Vlasák's avatar
Michal Vlasák committed
		return 1;
	}

	Arena arena;
	arena_init(&arena);

	Ast *ast = parse_src(&arena, (Str) { .str = (u8 *) argv[1], .len = strlen(argv[1]) });

	if (ast == NULL) {
		fprintf(stderr, "Failed to parse source\n");
		arena_destroy(&arena);
		return 1;
	}

Michal Vlasák's avatar
Michal Vlasák committed
	printf("Hello world!\n");

	MyState my_state = {0};
	jit_init(&my_state, &arena);

	int_plus_const_func *add_5 = jit_addition_with_constant(&my_state, 5);
	assert(add_5(3) == 8);

	jit_free(&my_state);

Michal Vlasák's avatar
Michal Vlasák committed
	arena_destroy(&arena);

	return 0;
}