/* -*- mode:c -*- */

#include "compiler.h"

#include <dasm_proto.h>
#include <dasm_x86.h>

#define value_size sizeof (struct value)

|.arch x86;

|.macro setup, nvars;
| push ebp;
| mov ebp, esp;
| sub esp, (value_size * nvars);
|.endmacro;

|.macro cleanup;
| mov esp, ebp;
| pop ebp;
| ret;
|.endmacro;

dasm_State *d;
unsigned int npc = 8;

struct function *find_function (struct environment *env, char *name)
{
	struct function *f = env->first;

	while ( strcmp (f->name, name) != 0 )
	{
		if ( f->prev )
			f = f->prev;
		else
			return NULL;
	}

	return f;
}

void compile (struct istream *is)
{
	|.section code;
	dasm_init (&d, DASM_MAXSECTION);

	|.globals lbl_;
	void *labels[ lbl__MAX ];
	dasm_setupglobal (&d, labels, lbl__MAX);

	|.actionlist lisp_actions;
	dasm_setup (&d, lisp_actions);

	dasm_growpc (&d, npc);
}
