0

MASM 汇编语言和 ILASM 的关系(如果有的话)是什么。有一对一的转换吗?我试图将 Quantum GIS 整合到一个程序中,我一边写一边写!我的计算机上有 GIS,我有 RedGate Reflector,它和 Visual Studio 2008 的对象浏览器都无法打开 Quantum 中的 .dll 的一个(其中几个我对它们的行为方式没有明确的线索)。我使用了 MASM 程序集编辑器并“打开”了同一个 dll,它吐出了一些我一开始没想到一定会理解的东西。我如何/如何将相同的“代码”转换为我可以在 ILASM 中与之交互的东西,并且我因此假设在 Csharp 中?非常感谢您阅读以及对早期问题的所有回复......请记住我对 Csharp 编程相对较新,

4

3 回答 3

1

IL 是本机代码之上的独立于平台的抽象层。在 .NET 平台上用 C#、VB.NET 或其他 .NET 语言编写的代码都编译为包含 IL 的程序集 .EXE/.DLL。通常,第一次执行 IL 代码时,.NET 运行时将通过 NGen 运行它,NGen 再次将其编译为本机代码并将输出存储在实际执行的临时位置。这允许将 .NET 平台代码部署到支持该 .NET 框架的任何平台,而不管系统的处理器或体系结构如何。

正如您所见,Reflector 非常适合查看程序集中的代码,因为可以轻松地以 C# 或 VB.NET 形式预览 IL。这是因为 IL 通常是更高级别的指令,并且还包含许多本机代码通常不具有的元数据,例如类、方法和变量名。

也可以通过设置 Visual Studio 项目平台或直接在程序集上调用Ngen.exe将 .NET 项目直接编译为本机代码。一旦完成,就很难理解本机代码。

于 2010-12-19T00:46:28.880 回答
1

MASM 处理 x86 指令并且依赖于平台/处理器,而 ILASM 指的是独立于平台/处理器的 .Net CIL(通用中间语言)指令。从特定的东西切换到更一般的东西很难实现,这就是为什么,AFAIK,没有从 MASM 到 ILASM 的转换器(相反,有!)

于 2010-12-19T00:28:12.047 回答
0

MASM 汇编语言和 ILASM 之间没有关系。我看不到您有任何方法可以将本机代码转换为 IL 代码。只有当 MASM 汇编语言是关于本机机器代码时,CLR 才能理解 IL。CLR 在运行时将 IL 转换为本机代码

于 2010-12-19T00:26:40.143 回答