Basic arithmetic and jump labels
This commit is contained in:
33
src/interpret/value.cpp
Normal file
33
src/interpret/value.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user