/*
....[@@@..[@@@..............[@.................. MUD++ is a written from
....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and
....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++.
....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing
....[@......[@..[@@@@@..[@@@@@.................. development project. All
................................................ contributions are welcome.
....Copyright(C).1995.Melvin.Smith.............. Enjoy.
------------------------------------------------------------------------------
Melvin Smith (aka Fusion) msmith@hom.net
MUD++ development mailing list mudpp@van.ml.org
------------------------------------------------------------------------------
vmopcodes.h
*/
#ifndef _VMOPCODES_H
#define _VMOPCODES_H
enum VMopcode
{
_VMOPC_ABORT = 0,
_VMOPC_NOP ,_VMOPC_PUSHIZ ,_VMOPC_PUSHFZ ,_VMOPC_PUSHI ,_VMOPC_PUSHF ,
_VMOPC_POP ,_VMOPC_MPOP ,_VMOPC_EXIT ,_VMOPC_ADD ,_VMOPC_SUB ,
_VMOPC_MUL ,_VMOPC_DIV ,_VMOPC_MOD ,_VMOPC_ICMP ,_VMOPC_IEVAL ,
_VMOPC_CAST2F ,_VMOPC_CAST2I ,_VMOPC_JMP ,_VMOPC_RCALL ,_VMOPC_RET ,
_VMOPC_INITL ,_VMOPC_INITP ,_VMOPC_REDUCEL ,_VMOPC_POPL ,_VMOPC_PUSHL ,
_VMOPC_PUSHTHIS ,_VMOPC_ICALL ,_VMOPC_FCALL ,_VMOPC_SWAP ,_VMOPC_CLONE ,
_VMOPC_ISNULL ,_VMOPC_OCMP ,_VMOPC_INC ,_VMOPC_DEC ,_VMOPC_INCL ,
_VMOPC_DECL ,_VMOPC_PUSHC ,_VMOPC_SISEMPTY ,_VMOPC_SPUSHEMPTY,_VMOPC_SCONCAT ,
_VMOPC_SINTCAT, _VMOPC_SFLOATCAT, _VMOPC_SISNUMBER, _VMOPC_STOINT,_VMOPC_SCMP,
_VMOPC_SSTARTARGS, _VMOPC_SGETARG, _VMOPC_SGETARGREST,_VMOPC_APUSH, _VMOPC_APOP,
_VMOPC_ALEN, _VMOPC_AADD, _VMOPC_MOVI, _VMOPC_MOVF, _VMOPC_MOVC,
_VMOPC_FCMP, _VMOPC_FEVAL, _VMOPC_LICMP, _VMOPC_LIEVAL, _VMOPC_PUSHSTAT,
_VMOPC_POPSTAT, _VMOPC_SLOOKUPSWITCH, _VMOPC_ILOOKUPSWITCH,
_VMOPC_ITABLESWITCH, _VMOPC_GETFIELD, _VMOPC_SETFIELD, _VMOPC_SCHARAT,
_VMOPC_SCHARATL, _VMOPC_SLEEP, _VMOPC_CHECKCAST, _VMOPC_UPCAST,
// Obj file only
_VMOPC_CALL
};
const u8 VMOPC_ABORT = (u8) _VMOPC_ABORT;
const u8 VMOPC_NOP = (u8) _VMOPC_NOP;
const u8 VMOPC_PUSHIZ = (u8) _VMOPC_PUSHIZ;
const u8 VMOPC_PUSHFZ = (u8) _VMOPC_PUSHFZ;
const u8 VMOPC_PUSHI = (u8) _VMOPC_PUSHI;
const u8 VMOPC_PUSHF = (u8) _VMOPC_PUSHF;
const u8 VMOPC_POP = (u8) _VMOPC_POP;
const u8 VMOPC_MPOP = (u8) _VMOPC_MPOP;
const u8 VMOPC_EXIT = (u8) _VMOPC_EXIT;
const u8 VMOPC_ADD = (u8) _VMOPC_ADD;
const u8 VMOPC_SUB = (u8) _VMOPC_SUB;
const u8 VMOPC_MUL = (u8) _VMOPC_MUL;
const u8 VMOPC_DIV = (u8) _VMOPC_DIV;
const u8 VMOPC_MOD = (u8) _VMOPC_MOD;
const u8 VMOPC_ICMP = (u8) _VMOPC_ICMP;
const u8 VMOPC_FCMP = (u8) _VMOPC_FCMP;
const u8 VMOPC_IEVAL = (u8) _VMOPC_IEVAL;
const u8 VMOPC_FEVAL = (u8) _VMOPC_FEVAL;
const u8 VMOPC_CAST2F = (u8) _VMOPC_CAST2F;
const u8 VMOPC_CAST2I = (u8) _VMOPC_CAST2I;
const u8 VMOPC_JMP = (u8) _VMOPC_JMP;
const u8 VMOPC_RCALL = (u8) _VMOPC_RCALL;
const u8 VMOPC_RET = (u8) _VMOPC_RET;
const u8 VMOPC_INITL = (u8) _VMOPC_INITL;
const u8 VMOPC_INITP = (u8) _VMOPC_INITP;
const u8 VMOPC_REDUCEL = (u8) _VMOPC_REDUCEL;
const u8 VMOPC_POPL = (u8) _VMOPC_POPL;
const u8 VMOPC_PUSHL = (u8) _VMOPC_PUSHL;
const u8 VMOPC_PUSHTHIS = (u8) _VMOPC_PUSHTHIS;
const u8 VMOPC_ICALL = (u8) _VMOPC_ICALL;
const u8 VMOPC_FCALL = (u8) _VMOPC_FCALL;
const u8 VMOPC_SWAP = (u8) _VMOPC_SWAP;
const u8 VMOPC_CLONE = (u8) _VMOPC_CLONE;
const u8 VMOPC_ISNULL = (u8) _VMOPC_ISNULL;
const u8 VMOPC_OCMP = (u8) _VMOPC_OCMP;
const u8 VMOPC_INC = (u8) _VMOPC_INC;
const u8 VMOPC_DEC = (u8) _VMOPC_DEC;
const u8 VMOPC_INCL = (u8) _VMOPC_INCL;
const u8 VMOPC_DECL = (u8) _VMOPC_DECL;
const u8 VMOPC_PUSHC = (u8) _VMOPC_PUSHC;
const u8 VMOPC_SISEMPTY = (u8) _VMOPC_SISEMPTY;
const u8 VMOPC_SPUSHEMPTY = (u8) _VMOPC_SPUSHEMPTY;
const u8 VMOPC_SCONCAT = (u8) _VMOPC_SCONCAT;
const u8 VMOPC_SCMP = (u8) _VMOPC_SCMP;
const u8 VMOPC_SINTCAT = (u8) _VMOPC_SINTCAT;
const u8 VMOPC_SFLOATCAT = (u8) _VMOPC_SFLOATCAT;
const u8 VMOPC_SISNUMBER = (u8) _VMOPC_SISNUMBER;
const u8 VMOPC_STOINT = (u8) _VMOPC_STOINT;
const u8 VMOPC_SSTARTARGS = (u8) _VMOPC_SSTARTARGS;
const u8 VMOPC_SGETARG = (u8) _VMOPC_SGETARG;
const u8 VMOPC_SGETARGREST = (u8) _VMOPC_SGETARGREST;
const u8 VMOPC_APUSH = (u8) _VMOPC_APUSH;
const u8 VMOPC_APOP = (u8) _VMOPC_APOP;
const u8 VMOPC_ALEN = (u8) _VMOPC_ALEN;
const u8 VMOPC_AADD = (u8) _VMOPC_AADD;
const u8 VMOPC_MOVI = (u8) _VMOPC_MOVI;
const u8 VMOPC_MOVF = (u8) _VMOPC_MOVF;
const u8 VMOPC_MOVC = (u8) _VMOPC_MOVC;
const u8 VMOPC_LICMP = (u8) _VMOPC_LICMP;
const u8 VMOPC_LIEVAL = (u8) _VMOPC_LIEVAL;
const u8 VMOPC_PUSHSTAT = (u8) _VMOPC_PUSHSTAT;
const u8 VMOPC_POPSTAT = (u8) _VMOPC_POPSTAT;
const u8 VMOPC_ILOOKUPSWITCH = (u8) _VMOPC_ILOOKUPSWITCH;
const u8 VMOPC_SLOOKUPSWITCH = (u8) _VMOPC_SLOOKUPSWITCH;
const u8 VMOPC_ITABLESWITCH = (u8) _VMOPC_ITABLESWITCH;
const u8 VMOPC_GETFIELD = (u8) _VMOPC_GETFIELD;
const u8 VMOPC_SETFIELD = (u8) _VMOPC_SETFIELD;
const u8 VMOPC_SCHARAT = (u8) _VMOPC_SCHARAT;
const u8 VMOPC_SCHARATL = (u8) _VMOPC_SCHARATL;
const u8 VMOPC_SLEEP = (u8) _VMOPC_SLEEP;
const u8 VMOPC_UPCAST = (u8) _VMOPC_UPCAST;
const u8 VMOPC_CHECKCAST = (u8) _VMOPC_CHECKCAST;
// Obj file only
const u8 VMOPC_CALL = (u8) _VMOPC_CALL;
#define VMFLAG_LESSER (1 << 0)
#define VMFLAG_EQUAL (1 << 1)
#define VMFLAG_GREATER (1 << 2)
#define VMFLAG_NOT_EQUAL ( VMFLAG_LESSER | VMFLAG_GREATER )
#endif