Add seti and int operators
This commit is contained in:
10
include/execute/interrupts.hpp
Normal file
10
include/execute/interrupts.hpp
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include <execute/registers.hpp>
|
||||
#include <vector>
|
||||
|
||||
using InterruptFn = void (*)(Execute::Registers & registers);
|
||||
|
||||
namespace Execute
|
||||
{
|
||||
std::vector<InterruptFn> GetInterrupts();
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include <execute/interrupts.hpp>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -9,7 +10,7 @@ namespace Execute
|
||||
unsigned currentStatement;
|
||||
unsigned nextStatement;
|
||||
std::unordered_map<std::string, unsigned> const & labelStatementIndice;
|
||||
|
||||
std::vector<InterruptFn> const interrupts;
|
||||
|
||||
State(std::unordered_map<std::string, unsigned> const & labelStatementIndice);
|
||||
};
|
||||
|
||||
@@ -22,6 +22,11 @@ namespace Interpret
|
||||
ExpectedLabel(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedValue : public TokenError
|
||||
{
|
||||
ExpectedValue(Token::Token const & token);
|
||||
};
|
||||
|
||||
struct ExpectedImmediate : public TokenError
|
||||
{
|
||||
ExpectedImmediate(Token::Token const & token);
|
||||
|
||||
@@ -54,4 +54,19 @@ namespace Interpret
|
||||
|
||||
JumpStatement(std::string const & label);
|
||||
};
|
||||
|
||||
struct SetStatement : Statement
|
||||
{
|
||||
Value firstArgument;
|
||||
Value secondArgument;
|
||||
|
||||
void Execute(Execute::Flags & flags, Execute::State & state, Execute::Registers & registers) override;
|
||||
};
|
||||
|
||||
struct InterruptStatement : Statement
|
||||
{
|
||||
Value firstArgument;
|
||||
|
||||
void Execute(Execute::Flags & flags, Execute::State & state, Execute::Registers & registers) override;
|
||||
};
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
namespace Token
|
||||
{
|
||||
enum class OperandType
|
||||
enum class OperandType : int
|
||||
{
|
||||
Unknown = -1,
|
||||
AddInteger = 0,
|
||||
@@ -15,7 +15,9 @@ namespace Token
|
||||
Jump,
|
||||
LessThanInteger,
|
||||
GreaterThanInteger,
|
||||
EqualInteger
|
||||
EqualInteger,
|
||||
SetInteger,
|
||||
Interrupt
|
||||
};
|
||||
|
||||
OperandType GetOperandType(std::string const & op);
|
||||
|
||||
Reference in New Issue
Block a user