我如何从c#编写汇编代码?

时间:2010-12-01 23:49:28

标签: c# .net assembly reflection.emit

我想在c#中编写一串汇编代码并将其发送到某个win32 api来编译并执行它并获得结果。

示例:

string str = "MOV 1,2;XOR EBP,EBP"...

听起来很难,但任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:5)

我怀疑有一个win API来编译和放大执行汇编。 你可以做的最好的事情就是写一个文件,执行MASM(或者这些天所谓的),链接它然后执行生成的程序。 我无法想象你想要做什么,但这几乎是我试图解决几乎所有问题的最后一种方式!

如果你想比较原生和&托管代码,只需编写两个或多或少相同的程序。没有理由从.NET生成程序集。您可以使用任何合适的工具。 MASM,调试等。

答案 1 :(得分:1)

AFAIK没有汇编编译器可用作WinAPI的一部分。您将不得不使用某些第三方编译器(并且您的程序需要重新分发它)。

但是,您可以使用ilasm这是.NET框架的一部分。 (请注意,它不是Intel32编译器,其源代码为CIL代码,因此像xor ebp, ebp这样的指令不起作用。)