问题标签 [cil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1391 浏览

visual-studio - 在 Visual Studio 中运行 MSIL

我们有 Visual Studio 2005。

我可以使用“ilasm”从命令行成功运行 MSIL 程序。

我希望能够在 VS 中运行这些。

从其他帖子和搜索中,我知道您需要创建一个“控制台应用程序”类型的项目?(他们暗示 VS 可以处理 MSIL,但我找不到任何具体的“如何”。)

“控制台应用程序”提供标准 Program.cs

然后我将我的 .il 文件(添加两个数字)添加到项目中。该项目成功构建,当我运行它时它什么也不做,并且我在 .il 文件中设置的断点不会被触发。不足为奇,因为 .il 文件没有被调用。

有些人可以提供一个逐步的方法来让它工作吗?

我还想知道我需要将什么命名空间添加到 .il 文件,以及是否可以将参数传递给 .il 文件以及(如果可以)如何?

0 投票
4 回答
5346 浏览

.net - 为什么反编译 .NET IL 代码这么容易?

与反编译本机 x86 二进制文件相比,为什么将 .NET IL 代码反编译为源代码如此容易?(Reflector 大部分时间都产生了相当不错的源代码,而反编译 C++ 编译器的输出几乎是不可能的。)

是因为 IL 包含很多元数据吗?还是因为 IL 是比 x86 指令更高的抽象?我做了一些研究,发现了以下两篇有用的文章,但它们都没有回答我的问题。

0 投票
2 回答
367 浏览

cil - MSIL : 多余的分支

考虑这个 C# 片段:

使用 Reflector 反汇编显示:

让我困惑的是:

它存储项目,分支到下一行(无论如何都会执行),然后再次加载它。

是否有一个原因?

0 投票
2 回答
256 浏览

.net - 显示堆栈的内容

我在 Visual Studio 中或通过 Mdbg 运行 MSIL。

有什么方法可以显示 MSIL 堆栈的内容吗?

例如,如果我执行 ldloc“某个变量”,有没有办法查看堆栈并看到该变量现在在堆栈上。

我假设 MSIL 堆栈与 CPU 堆栈不同,即 SP 寄存器指向的内存?

0 投票
5 回答
6495 浏览

.net - C++ 是否转换为 MSIL?

我一直是 C# 和 .Net 开发人员,并且一直在玩学习 C++ 的想法。

我一直在考虑这个的主要原因之一是,C++ 可以比使用 .Net 框架的应用程序快多少。但是我是否正确假设如果我在 Visual Studio 中编写 C++ 应用程序,和/或在 C++ 应用程序中引用 .Net 库,该 C++ 会在 MSIL 中转换(就像 C# 一样) - 因此我会失去任何好处从里面编码?

所以我的问题实际上是这样的:引用.Net程序集的应用程序的C++组件是以“传统”方式编译的,还是编译成MSIL?

0 投票
3 回答
463 浏览

c# - 可以获得 C# 代表的 MSIL 吗?

只是出于好奇......是否可以以编程方式获取代表的 MSIL?我很好奇,因为我一直在玩弄分布式计算系统的想法,您可以在其中简单地编写程序,并且程序本身将分发到将发生工作的每个不同节点。我知道你可以通过在网络上复制实际的程序集并将其加载到 appdomain 中来做到这一点,但我认为拥有一个更简单的模型会非常有趣。

谢谢!

0 投票
0 回答
385 浏览

ide - 被 ILIDE 卡住了

我正在拼命地为 MSIL 找到一个(好的,甚至任何?)IDE。(对于那个 c :MSIL 的 IDE

我以为我用 ILIDE 找到了一个,但是在调试我的代码时,我总是(不取决于代码)得到:

SandDock]TD.SandDock.ControlLayoutSystem::OnMouseMove(System.Windows.Forms.MouseEventArgs

当我不使用鼠标时(因为它显然是由 e 鼠标悬停触发的)我得到:

System.NullReferenceException来自“调试器 3”,没有任何附加信息。

有没有人更成功地使用该程序(3.0)?

0 投票
2 回答
3392 浏览

delegates - 是否有可能扩展 System.Delegate?

在 C# 中不能从 System.Delegate 或 System.MulticastDelegate 继承。只要您声明标准的“运行时管理”方法,就完全可以在 MSIL 中执行此操作。但是,每次我向类型添加“cil 管理”方法时,我都会得到:

System.TypeLoadException:运行时实现的委托方法的非法定义。

是否可以扩展 Delegate/MulticastDelegate?

0 投票
1 回答
337 浏览

c# - 为什么 C# 编译器显式声明一个类型实现的所有接口?

C# 编译器似乎明确指出了它的所有接口,以及它的基类实现。CLI 规范说这不是必需的。我见过其他一些编译器没有明确地发出这个,它似乎工作正常。C# 这样做有什么区别或原因吗?

底部的 C# 为 B 生成的 MSIL 是:

它不需要指定 ISimple,因为 A 像 IAdvanced 一样实现它。C#代码:

0 投票
0 回答
1020 浏览

.net - 哪些语言编译为 CIL / MSIL

我见过的大多数列表包括:

  • C#
  • VB.Net
  • 其他 .NET 语言

哪些语言属于“其他”类别?

我遇到过:

  • 德尔福
  • C++
  • Cobol.Net
  • 铬合金

我确定肯定还有其他人?