Devin Jenson's WebLog' ynda Dynamically Writing and Executing Native Assembly in C# başlığı altında harika bir iş yapılmış, .NET altında direk ASM kullanılarak kod çalıştırılmış. Bu bildiğimiz gibi C/C++ gerektiğinde rahatlıkla kullanabildiğimiz bir şey ancak managed kodda bunu yapmak çok keyifli.
Bunun yapılabildğini bilmiyordum, bende kodun VB.NET versiyonunu yazdım;
.NET Framework 2 gerekiyor;
Private Delegate Function _MyAdd(ByVal x As Integer, ByVal y As Integer) As Integer
Sub Main()
'A simple Add function
Dim myAddNativeCodeBytes As Byte() = { _
&H8B, &H44, &H24, &H8, _
&H8B, &H4C, &H24, &H4, _
&H3, &HC1, _
&HC2, &H8, &H0 _
}'We need to push the code bytes into a native buffer
Dim myAddNativeCodeBytesPtr As IntPtr = IntPtr.Zero'Allocate the native buffer
myAddNativeCodeBytesPtr = Marshal.AllocCoTaskMem(myAddNativeCodeBytes.Length)'Push the code bytes over
Marshal.Copy(myAddNativeCodeBytes, 0, myAddNativeCodeBytesPtr, myAddNativeCodeBytes.Length)Dim MyAdd As _MyAdd
MyAdd = CType(Marshal.GetDelegateForFunctionPointer(myAddNativeCodeBytesPtr, GetType(_MyAdd)), _MyAdd)Console.WriteLine(MyAdd(10, 20))
End Sub
