#include "mcg.h"

static int vreg_count = 1;

struct vreg* new_vreg(void)
{
	struct vreg* vreg = calloc(1, sizeof *vreg);
	vreg->id = vreg_count++;
	return vreg;
}

struct hreg* new_hreg(const struct burm_register_data* brd)
{
	struct hreg* hreg = calloc(1, sizeof *hreg);
	hreg->id = brd->id;
    hreg->brd = brd;
	hreg->attrs = brd->attrs;
	hreg->is_stacked = false;
    /* The aliases array needs to be initialised later. */
	return hreg;
}

struct hreg* new_stacked_hreg(uint32_t attrs)
{
    static int hreg_count = 1;
	struct hreg* hreg = calloc(1, sizeof *hreg);
	hreg->id = aprintf("stacked_%d_id_%d", attrs, hreg_count++);
	hreg->attrs = attrs;
	hreg->is_stacked = true;
	hreg->offset = -1;
    array_append(&hreg->aliases, hreg);
	return hreg;
}

/* vim: set sw=4 ts=4 expandtab : */