CosmosOS / IL2CPU

IL2CPU is a compiler for .NET IL code to compile to assembly language for direct booting.
BSD 3-Clause "New" or "Revised" License
282 stars 70 forks source link

[Discussion] Using ldftn and calli to call X# methods from managed code #73

Open jp2masa opened 6 years ago

jp2masa commented 6 years ago

I think it would be interesting to call X# methods from IL (C#) using ldftn/calli. The assembler plug would be replaced with managed code, which means better portability.

Example

public static void SendNumber(int number)
{
    ldarg.0
    ldftn
    calli
}

[XSharpMethod("DebugStub_SendSimpleNumber")]
private static void DoSendNumber(int number);

We just need to handle the attribute in ldftn, where we just emit push label.

Possible issues

fanoI commented 5 years ago

I think this would be a good idea to make things simpler. You could - for example - write the opcoded Execute part in "real" X# too using this method?

A clarification I need only to write this:

[XSharpMethod("DebugStub_SendSimpleNumber")]
private static void DoSendNumber(int number);

the stub method in C# will be generated automatically by IL2CPU?