Cosmos/source/Indy.IL2CPU.IL.X86/X86CustomMethodImplementationProxyOp.cs

34 lines
963 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.Cecil.Cil;
using CPUx86 = Indy.IL2CPU.Assembler.X86;
namespace Indy.IL2CPU.IL.X86 {
public class X86CustomMethodImplementationProxyOp: CustomMethodImplementationProxyOp {
public X86CustomMethodImplementationProxyOp(Instruction aInstruction, MethodInformation aMethodInfo)
: base(aInstruction, aMethodInfo) {
}
protected override void Ldarg(int index) {
Op.Ldarg(Assembler, MethodInfo.Arguments[index].VirtualAddress);
}
protected override void Ldflda(TypeInformation.Field aField) {
Op.Ldflda(Assembler, aField.RelativeAddress);
}
protected override void CallProxiedMethod() {
Op x = new Call(ProxiedMethod);
x.Assembler = Assembler;
x.Assemble();
}
protected override void Ldloc(int index) {
Op x = new Ldloc(MethodInfo, index);
x.Assembler = Assembler;
x.Assemble();
}
}
}