mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Start of rewrite 5279!
This commit is contained in:
133
libraries/libLSL/lslByteCode.cs
Normal file
133
libraries/libLSL/lslByteCode.cs
Normal file
@@ -0,0 +1,133 @@
|
||||
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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user