Tag Archives: MSIL

Bug in Mono.Cecil

I’m encountering this annoying bug in Mono.Cecil… It seems that when modifying the assembly it calculates wrong offset, depending on what I add… Basically Mono.Cecil adds a jump out of the method. Which in short leads to broken assemblies: [IL]: Error: [C:\…\Tedd.Fibres\Tedd.Fibres.Test.GUI\bin\Debug\Tedd.Fibres.TestModule_out.dll : Tedd.Fibres.TestModule.TestClass::Test][offset 0x00000028] Branch out of the method. I managed to Google some other people having… Read More »

Small milestone reach today

Application is now able to: Create Script Engine (SE) SE hooks up to a temporary debug event in Test App Test App asks SE to load LSO-file SE compiles LSO-file into .Net Assembly SE loads .Net Assembly SE Initializes the .Net Assembly and hands over a “LSL BultIn Commands” object (this object is the scripts command-object) Script Manager… Read More »

Status on initial SE implementation

With the model described in the two prior postings we will have simple scripts support up and running fairly quickly. Other developers will be able to extend script support while I continue working on Compiler and ScriptEngine. Both incoming events and outgoing LSL builtin commands needs extending. We will lack script yield inserting. This is where the preparation… Read More »

ScriptEngine – Events

The builtin commands for SE is simple enough. But incoming events could need some more planning. SE will have a set of events that is fired based on stuff that happens in OpenSim (EventHandler). This EventHandler will translate the event into a LSL-compatible event, including picking up the required parameters. The EventHandler needs to know what object, and… Read More »

ScriptEngine

The time has come to start implementing script support into OpenSim. ScriptEngine (SE)OpenSim will have an interface for SE. It will load SE dynamically using reflection. SE will be in separate .dll Assembly.During load SE will hook itself up to the necessary events in OpenSim.This includes: Object rez (look for active scripts), object derez and all events relating… Read More »

Current OPCODE implementation status

This is the current OPCODE implementation status:

 

Frames, heap and code pointers

LSL ByteCode uses a lot of pointers, both to memory (static frames, local/global, heap) as well as JUMP pointers. Some of these pointers exist during load, for example argument types, static data, jump positions, etc. While others are allocated and created dynamically during run-time. What they all have in common is that they point to a position in… Read More »

Stack issues

In my first attempt I used the .Net stack and did a direct translation from the LSO ByteCode. I found that there are a couple of problems related to that. First of all is the obvious problem that I stated earlier, I don’t know what datatype is in the stack – but many (most) .Net commands requires me… Read More »

LSL scripting support – Progress report

Ok, time for status update again… Status Code is currently able to convert from LSL ByteCode to .Net IL, compile it and save it to disk. I’ve moved the code from a quick and dirty hack (that compiled the first script) to a bit more organized. It’s still a mess, but that can be fixed later. The goal… Read More »