Files
wassembly/src/interpret/value.cpp

33 lines
702 B
C++

#include <interpret/errors.hpp>
#include <interpret/value.hpp>
namespace Interpret
{
int & Value::GetValue(Execute::Registers & registers)
{
if (type == ValueType::ImmediateInteger)
{
return integer;
}
return registers.registers[registerIndex];
}
void Value::CreateFromToken(Token::Token const & token)
{
if (token.type == Token::TokenType::ImmediateInteger)
{
type = ValueType::ImmediateInteger;
integer = std::get<int>(token.data);
}
else if (token.type == Token::TokenType::Register)
{
type = ValueType::Register;
registerIndex = static_cast<int>(std::get<Token::RegisterType>(token.data));
}
else
{
throw Internal::BadTokenForValue(token);
}
}
}