Added direct memory access
This commit is contained in:
@@ -32,11 +32,21 @@ namespace Interpret
|
||||
ExpectedImmediate(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedImmediateOrMemory : public TokenError
|
||||
{
|
||||
ExpectedImmediateOrMemory(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedRegister : public TokenError
|
||||
{
|
||||
ExpectedRegister(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedRegisterOrMemory : public TokenError
|
||||
{
|
||||
ExpectedRegisterOrMemory(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedOperand : public TokenError
|
||||
{
|
||||
ExpectedOperand(Token::Token const & token);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include <execute/registers.hpp>
|
||||
#include <execute/state.hpp>
|
||||
#include <token/token.hpp>
|
||||
|
||||
namespace Interpret
|
||||
@@ -7,19 +7,23 @@ namespace Interpret
|
||||
enum class ValueType
|
||||
{
|
||||
Register,
|
||||
ImmediateInteger
|
||||
ImmediateInteger,
|
||||
MemoryLocation
|
||||
};
|
||||
|
||||
enum class ValueDataType
|
||||
{
|
||||
Register,
|
||||
Immediate
|
||||
};
|
||||
|
||||
struct Value
|
||||
{
|
||||
ValueType type;
|
||||
union
|
||||
{
|
||||
int registerIndex;
|
||||
int integer;
|
||||
};
|
||||
ValueDataType dataType;
|
||||
int data;
|
||||
|
||||
int & GetValue(Execute::Registers & registers);
|
||||
int & GetValue(Execute::State & state, Execute::Registers & registers);
|
||||
|
||||
void CreateFromToken(Token::Token const & token);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user