tlang-runtime-compiler/TLang.Common/Instruction.cs

72 lines
2.1 KiB
C#

using System.IO;
namespace TLang.Common
{
public abstract class Instruction
{
public abstract int CalculateLength();
public abstract void WriteData(Stream strm);
public const byte ADD = 0x00;
public const byte SUB = 0x01;
public const byte TIMES = 0x02;
public const byte DIVIDE = 0x03;
public const byte MOD = 0x04;
public const byte POW = 0x05;
public const byte LSHIFT = 0x06;
public const byte RSHIFT = 0x07;
public const byte BOR = 0x08;
public const byte BAND = 0x09;
public const byte XOR = 0x0A;
public const byte NEG = 0x0B;
public const byte BNOT = 0x0C;
public const byte NEQ = 0x10;
public const byte EQ = 0x11;
public const byte LOR = 0x12;
public const byte LAND = 0x13;
public const byte LNOT = 0x14;
public const byte LT = 0x15;
public const byte LTE = 0x16;
public const byte GT = 0x17;
public const byte GTE = 0x18;
public const byte POP = 0xE9;
public const byte SCOPE_BEGIN = 0xEA;
public const byte SCOPE_END = 0xEB;
public const byte CALL_FUNC = 0xEC;
public const byte CALL_METHOD = 0xED;
public const byte JMP = 0xEE;
public const byte JMPC = 0xEF;
public const byte POP_ARRAY_VALUE = 0xF0;
public const byte PUSH_ARRAY_VALUE = 0xF1;
public const byte POP_FIELD_VALUE = 0xF2;
public const byte PUSH_FIELD_VALUE = 0xF3;
public const byte POP_VARIABLE_VALUE = 0xF4;
public const byte PUSH_VARIABLE_VALUE = 0xF5;
public const byte PUSH_CHAR = 0xF6;
public const byte PUSH_FALSE = 0xF7;
public const byte PUSH_TRUE = 0xF8;
public const byte PUSH_UNDEFINED = 0xF9;
public const byte PUSH_NULL = 0xFA;
public const byte PUSH_CLOSURE = 0xFB;
public const byte PUSH_STRING = 0xFC;
public const byte PUSH_DOUBLE = 0xFD;
public const byte NOP = 0xFE;
public const byte RET = 0xFF;
}
}