// -*- c++ -*-
//
// regfile.h:
// register file
//
#ifndef	REGFILE_H
#define	REGFILE_H

#include "sim.h"

using namespace std;

class regfile {
public:
    // constants
    static const int num_of_regs = 32;
private:
    sim_word	gpr[num_of_regs];
public:
    // constuctor
    regfile() {
	reset();
    }

    // destructor
//    ~regfile() { /* nothing to do */ }

    void reset() {
	for (int i = 0; i < num_of_regs; i++)
	    gpr[i] = 0;
    }

    sim_word &operator[](int i) {
	if (i < 0 || i >= num_of_regs) {
	    cerr << "regfile::operator[]: illegal register number "
		 << i << endl;
	    i = 0;
	}

	gpr[0] = 0;	// register 0 always zero

	return gpr[i];
    }
};

#endif
// end of regfile.h