1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#ifndef INTERPRETER_GENERICOPCODES_H_INCLUDED
#define INTERPRETER_GENERICOPCODES_H_INCLUDED
#include "opcodes.hpp"
#include "runtime.hpp"
namespace Interpreter
{
class OpPushInt : public Opcode1
{
public:
void execute(Runtime& runtime, unsigned int arg0) override { runtime.push(static_cast<Type_Integer>(arg0)); }
};
class OpIntToFloat : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Integer data = runtime[0].mInteger;
Type_Float floatValue = static_cast<Type_Float>(data);
runtime[0].mFloat = floatValue;
}
};
class OpFloatToInt : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Float data = runtime[0].mFloat;
Type_Integer integerValue = static_cast<Type_Integer>(data);
runtime[0].mInteger = integerValue;
}
};
class OpNegateInt : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Integer data = runtime[0].mInteger;
data = -data;
runtime[0].mInteger = data;
}
};
class OpNegateFloat : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Float data = runtime[0].mFloat;
data = -data;
runtime[0].mFloat = data;
}
};
class OpIntToFloat1 : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Integer data = runtime[1].mInteger;
Type_Float floatValue = static_cast<Type_Float>(data);
runtime[1].mFloat = floatValue;
}
};
class OpFloatToInt1 : public Opcode0
{
public:
void execute(Runtime& runtime) override
{
Type_Float data = runtime[1].mFloat;
Type_Integer integerValue = static_cast<Type_Integer>(data);
runtime[1].mInteger = integerValue;
}
};
}
#endif
|