#ifndef STAGE_H #define STAGE_H #include "definitions.h" #include "storage.h" #include class Stage { public: virtual ~Stage() = default; protected: /** * The shared pool of general-purpose integer registers. */ static std::array gprs; /** * The address of the currently executing instruction. */ static int pc; /** * A pointer to the next stage in the pipeline. */ Stage *next; /** * A pointer to the top-level storage device. */ static Storage *storage; /** * A flag indicating whether pipelining should be used. */ bool is_pipelined; }; #endif /* STAGE_H_INCLUDED */