问题标签 [il]

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 投票
2 回答
609 浏览

c# - 是否可以将单个 C# 文件转换为 IL 程序集?

给定一个 c# 源文件,我想输出该单个文件的 IL(未组装),以便稍后我可以将每个“.il”文件提供给 ilasm 以生成程序集,这可能吗?

0 投票
1 回答
178 浏览

c# - 使用 IL 构造对象和调用方法

我编写了以下程序以了解 IL 中的对象构造和方法调用不幸的是它没有打印

你好吗

在控制台上。

你有什么主意吗?

peverify 的输出也在下面给出。

C:\temp\Research\Research\bin\Release>peverify Research.exe

Microsoft (R) .NET Framework PE 验证程序。版本 4.0.30319.1 版权所有 (c) Microsoft Corporation。版权所有。

Research.exe 中的所有类和方法均已验证。

C:\temp\Research\Research\bin\Release>

0 投票
1 回答
591 浏览

c# - 为二维数组生成 IL

我想使用System.Reflection.Emit命名空间为二维数组构造生成 IL。

我的 C# 代码是

使用ildasm,我意识到为上述 C# 代码生成了以下 IL 代码。

我能够生成最后三个 IL 语句,如下所示。

但我对如何生成第一个 IL 语句(即IL_0006: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)没有明确的想法)

你有什么主意吗?

此外,有人可以提出一些关于如何使用 System.Reflection.Emit 命名空间来生成 IL 代码的好教程/文档吗?

0 投票
1 回答
2401 浏览

c# - 为双数组生成 IL

我正在编写一些 IL 机构,用于使用 System.Reflection.Emit 命名空间创建intdouble数组。

为了创建int数组,我使用以下代码。

它按预期工作并在控制台上打印 500。

我尝试创建double数组的方式相同,如下所示。

不幸的是,这不起作用,当我使用pereview它检查生成的程序集时,出现了以下错误。

此外,我使用检查生成的程序集ildasm

你有什么主意吗?

0 投票
3 回答
1121 浏览

.net - 每个 .NET 类的最大方法数是多少

标题实际上询问了所有内容,但为了完整起见:

嗨,我正在 .NET 平台上编写一个小型后编译工具,在尝试对其进行优化时,我遇到了一个问题,我无法从通用语言基础架构的 ECMA 标准中轻松找到答案(命令行)。

单个类可以拥有的最大方法数是多少?有限制吗?

编辑

感谢 Kelsey 指出现实生活中的测试。尽管我仍然会关心实际限制是什么,但出于我实际的现实生活目的,我想知道它是 2^16 / 2^32 -or- 2^31-1,正如他所指出的那样,它似乎明显高于每类 64K 方法..

0 投票
1 回答
140 浏览

c# - 为什么以下两种方法会生成相同的 IL?

如果您看到为这两种方法生成的 IL,它们看起来是一样的,或者我错过了什么……为什么第一个 Include 方法会发生装箱?

0 投票
5 回答
1439 浏览

c# - 这段代码有什么不安全的?

我正在学习 CLR 中的托管和非托管代码。所以我用 C# 中的 C 风格指针编写了这个例子:

所以我想知道我从上面的代码中得到的 IL 代码中真正不安全的是什么?

CLR 是否管理此代码?上面的代码会出现什么问题?

0 投票
1 回答
657 浏览

c# - 为递归方法生成 IL

我尝试使用以下策略为递归方法生成 IL,首先我使用以下代码片段定义类型

接下来,我开始为递归方法生成 IL,如下所示。

为了在方法体内调用方法本身,我使用了以下构造,

最后使用以下方法保存生成的程序集。

不幸的是,这不起作用,因为递归方法调用构造,在方法内部返回 null。这里的问题是方法(即ilOfMethod.Emit(OpCodes.Call, typeBuilder.GetMethod("MethodName", new System.Type[] {typeof(arg1),typeof(arg2),etc})); )内的递归调用返回null。因为我们实际上是在SaveAssembly()方法内部创建类型,所以这是可以接受的。所以我的问题是:是否可以使用上述构造为递归方法生成 IL?如果不可能,请告诉我用于为递归方法生成 IL 的替代构造。

0 投票
1 回答
657 浏览

c# - 如何将 DataReader 结果转换为实体?->使用发射

现在我想将 DataReader 转换为 Entity 。我有这样的方法:

并像这里一样调用方法,

不幸的是,如果 DB 中归档的数据为 NULL,则会出现异常。由于 int 类型不能为 NULL 值,但我将其转移到 int?。然后事实证明我的调用方法效果很好。

但是在这里我想要一个扩展名,即当 DB 中的数据归档为 NULL 时,我们可以使用自定义属性来指示默认值。所以我重新定义了 ReadInt32 如下,但令我惊讶的是,总是出现 JIT 内部异常。我对IL不熟悉,我真的很期待对大家的帮助,非常感谢。

将代码更改如下,但仍然存在错误,异常类型为:System.EntryPointNotFoundException:

0 投票
6 回答
14625 浏览

c# - 将 C# 代码转换为 IL 代码

如何获得 C# 代码的 IL 代码?我可以使用外部库执行此操作,还是存在内部函数?

编辑:我想用 MessageBox 在我的应用程序中显示 IL 代码。