是否可以在vb.net或C#中编写汇编代码?
我知道如何编写MSIL代码,但出于好奇,我想知道是否有编写汇编代码的变通方法。我可以想出一种方法,比如用字符串编写代码并将其传递给原生windows api,后者执行并返回结果,但不确定这是真的还是可能的是否可以在vb.net或C#中编写汇编代码?,.net,assembly,.net,Assembly,我知道如何编写MSIL代码,但出于好奇,我想知道是否有编写汇编代码的变通方法。我可以想出一种方法,比如用字符串编写代码并将其传递给原生windows api,后者执行并返回结果,但不确定这是真的还是可能的 我想听听你的意见/建议。谢谢不,不能直接用C#或VB.Net编写汇编代码 最接近的方法是将汇编代码分离到一个本地DLL中,该DLL导出了C风格的函数入口点。然后PInvoke从C#/VB.Net应用程序进入这些入口点 另一种选择是使用C++/CLI,因为可以将程序集内联到C++/CLI项目中
我想听听你的意见/建议。谢谢不,不能直接用C#或VB.Net编写汇编代码 最接近的方法是将汇编代码分离到一个本地DLL中,该DLL导出了C风格的函数入口点。然后PInvoke从C#/VB.Net应用程序进入这些入口点
另一种选择是使用C++/CLI,因为可以将程序集内联到C++/CLI项目中 您可以使用编译代码,然后使用
Marshal.GetDelegateForFunctionPointer
使其可调用。您可以从C#组装它,并通过p/Invoke将生成的机器代码传递给C函数
int execute(char* machine_code)
{
int(*fn)() = machine_code;
return fn();
}
您需要担心确保内存区域是可执行的,但这超出了这个答案的范围。这里的另一个(更多.NET)选项是用IL编写它,然后用ilasm或类似MonoDevelop的东西进行编译,它支持IL项目。我理解,因此,问一个恰当的问题是,是否有可能在运行时用C/C++编译汇编代码,如果有可能的话,我们可以将汇编的代码字符串pinvoke到本机dllOf中。当然,基于IL的汇编可以合并到C#汇编中。需要手动编辑MSBuild文件。。。