134 lines
3.3 KiB
C#
134 lines
3.3 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Text;
|
||
|
|
||
|
namespace libLSL
|
||
|
{
|
||
|
class lslByteCode
|
||
|
{
|
||
|
byte[] bytecode;
|
||
|
|
||
|
public void executeStep()
|
||
|
{
|
||
|
byte ins = nextInstruction();
|
||
|
lslOpcodes code = (lslOpcodes)ins;
|
||
|
|
||
|
Object arg1 = (Object)32;
|
||
|
Object arg2 = (Object)32;
|
||
|
|
||
|
switch (code)
|
||
|
{
|
||
|
case lslOpcodes.OP_NOOP:
|
||
|
break;
|
||
|
|
||
|
case lslOpcodes.OP_POP:
|
||
|
popBytes(4);
|
||
|
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;
|
||
|
|
||
|
case lslOpcodes.OP_STORE:
|
||
|
// Somefin.
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Advance the instruction pointer, pull the current instruction
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
byte nextInstruction()
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Removes bytes from the stack
|
||
|
/// </summary>
|
||
|
/// <param name="num">Number of bytes</param>
|
||
|
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)
|
||
|
{
|
||
|
return new byte[1];
|
||
|
}
|
||
|
|
||
|
/// <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)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|