#include #include #include #include namespace Execute { class VirtualMachine { private: Flags flags; Registers registers; State state; bool terminated; Interpret::Code const & code; void Step(); VirtualMachine(Interpret::Code const & code, unsigned const memorySize); public: void Run(); void SingleStep(); Flags const & GetFlags() const; Registers const & GetRegisters() const; State const & GetState() const; Interpret::Statement const * const GetCurrentStatement() const; bool IsTerminated() const; static VirtualMachine CreateFromCode(Interpret::Code const & code); }; }