* Added NOOP, POP, POPV, POPQ, DUP, DUPV, DUPQ instructions.
* Placeholders for POPS, POPL, POPIP, POPBP, POPSP, POPSLR, DUPS, DUPL0.1-prestable
parent
ea63400741
commit
57dc34b23f
|
@ -13,27 +13,117 @@ namespace libLSL
|
||||||
byte ins = nextInstruction();
|
byte ins = nextInstruction();
|
||||||
lslOpcodes code = (lslOpcodes)ins;
|
lslOpcodes code = (lslOpcodes)ins;
|
||||||
|
|
||||||
|
Object arg1;
|
||||||
|
Object arg2;
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case lslOpcodes.OP_NOOP:
|
case lslOpcodes.OP_NOOP:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case lslOpcodes.OP_POP:
|
case lslOpcodes.OP_POP:
|
||||||
popBytes(4);
|
popBytes(4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPS:
|
||||||
|
case lslOpcodes.OP_POPL:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPV:
|
||||||
|
popBytes(12);
|
||||||
|
break;
|
||||||
|
case lslOpcodes.OP_POPQ:
|
||||||
|
popBytes(16);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPARG:
|
||||||
|
popBytes((Int32)arg1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPIP:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPBP:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPSP:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_POPSLR:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_DUP:
|
||||||
|
pushBytes(getBytes(4));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_DUPS:
|
||||||
|
case lslOpcodes.OP_DUPL:
|
||||||
|
// Do Stuff
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_DUPV:
|
||||||
|
pushBytes(getBytes(12));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case lslOpcodes.OP_DUPQ:
|
||||||
|
pushBytes(getBytes(16));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Advance the instruction pointer, pull the current instruction
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
byte nextInstruction()
|
byte nextInstruction()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes bytes from the stack
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="num">Number of bytes</param>
|
||||||
void popBytes(int num)
|
void popBytes(int num)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pushes Bytes to the stack
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bytes">Ze bytes!</param>
|
||||||
|
void pushBytes(byte[] bytes)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Bytes from the stack
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="num">Number of bytes</param>
|
||||||
|
/// <returns>Ze bytes!</returns>
|
||||||
|
byte[] getBytes(int num)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves bytes to the local frame
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bytes">Ze bytes!</param>
|
||||||
|
/// <param name="index">Index in local frame</param>
|
||||||
|
void storeBytes(byte[] bytes, int index)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue