29 lines
411 B
C++
29 lines
411 B
C++
#ifndef roza_VM_HPP
|
|
#define roza_VM_HPP
|
|
|
|
#include "commons.hpp"
|
|
#include "Program.hpp"
|
|
#include "StatusLog.hpp"
|
|
|
|
namespace roza
|
|
{
|
|
class VM
|
|
{
|
|
public:
|
|
explicit VM(StatusLog& log);
|
|
virtual ~VM();
|
|
|
|
void exec(std::shared_ptr<Program> program);
|
|
|
|
private:
|
|
StatusLog& m_log;
|
|
std::vector<param_t> m_stack;
|
|
size_t m_pc = 0;
|
|
|
|
void push(param_t param);
|
|
param_t pop();
|
|
};
|
|
}
|
|
|
|
#endif
|