MASM汇编语言和ILASM的关系(如果有的话)是什么。有一对一的转换吗?我试图将Quantum GIS整合到一个程序中,我有点像写作一样!我的计算机上有GIS,我有RedGate Reflector,它也没有Visual Studio 2008的对象浏览器无法在Quantum中打开一个(有几个我对它们的行为方式没有强烈线索)。我使用了MASM程序集编辑器并“打开”了相同的dll,并且它首先吐出了我不希望必须理解的内容。我怎样才能/可以将相同的“代码”转换为我可以在ILASM中进行交互的内容,并且因此我假设在Csharp中?非常感谢您阅读以及对早期问题的所有回复......请记住,我对Csharp编程相对较新,甚至更新于MASM和ILASM。
答案 0 :(得分:1)
MASM处理x86指令并且依赖于平台/处理器,而ILASM则引用与平台/处理器无关的.Net CIL(通用中间语言)指令。从特定的东西切换到更普遍的东西很难实现,这就是为什么,AFAIK,没有从MASM到ILASM的转换器(反过来,有!)
答案 1 :(得分:1)
IL是一个独立于平台的本机代码抽象层。使用C#,VB.NET或其他.NET语言在.NET平台上编写的代码都编译为包含IL的程序集.EXE / .DLL。通常,第一次执行IL代码时,.NET运行时将通过NGen运行它,NGen再次将其编译为本机代码并将输出存储在实际执行的临时位置。这允许将.NET平台代码部署到支持该.NET框架的任何平台,无论系统的处理器或体系结构如何。
正如您所见,Reflector非常适合查看程序集中的代码,因为IL可以轻松地以C#或VB.NET形式进行预览。这是因为IL通常是更高级别的指令,并且还包含本机代码通常不具有的大量元数据,例如类,方法和变量名称。
通过设置Visual Studio项目平台或直接在程序集上调用Ngen.exe,也可以将.NET项目直接编译为本机代码。完成后,很难理解本机代码。
答案 2 :(得分:0)
Ther与MASM汇编语言和ILASM之间没有关系。我没有看到你有任何方法将本机代码转换为IL代码。仅当MASM汇编语言是关于本机机器代码时,CLR才能理解IL。 CLR在运行时将IL转换为本机代码