x64 文件夹中的 ILDASM
我一直在以下位置使用 ildasm.exe (查看 .NET 程序集): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 但是,子文件夹中还有另一个 il…
实例方法中的 CIL (MSIL) 尾调用递归
背景:我正在为一个学校项目编写 .NET 编译器(与 C# 非常相似)。我当前尝试添加的功能之一是方法内的尾调用递归。 更多信息:在 CIL 中,“this”被…
如何使用 OpCodes.Call 生成此代码
此问题与以下内容相关:使用代码生成来转换集合的项目 由于上一个问题不够清楚,这就是我需要帮助的地方。 如何使用 OpCodes.Call 生成此代码: retur…
使用代码生成来转换集合的项目
我正在使用 C# 进行代码生成,我想在吸气剂内投射一个支持字段。 这是一个例子: public class Potato { } public class ProxyPotato : Potato { } pu…
Reflection.Emit代码调用“base”。而不是“这个”。在布尔域上
我有以下 A 类。 public class A { public string Name { get; set; } } 我需要使用 Reflection.Emit 发出动态代理来覆盖 Equals。 // This class mus…
如何交换 .NET IL 堆栈上的前两个位置
我想知道是否可以在不使用非堆栈存储的情况下交换 .net IL 堆栈上的前两个位置。这是堆栈机经常可以做的事情,但在 IL 中似乎没有明显的指令。 原因是…
通用语法糖或真正的改进
我对以下方法调用有疑问: var ctl1 = this.FindControlRecursively("SomeField") as HiddenField; var ctl = this.FindControlRecursively("SomeFiel…
有什么好的学习CIL的资源吗?
Closed. This question is off-topic. It is not currently accepting answers. 想要改进此问题吗?更新问题,使其关于- Stack Overflow 的主题。 11…
为基本算术操作发出 IL
我对 C# 相当陌生,最近了解到可以发出 IL 来实现一个简单的评估堆栈: stack [ B C * A + ] ==> push B, push C, DO MULT, push A, DO ADD, POP retu…
为什么 C# 编译器在 IL 中发出额外的操作码?
如果我有一个方法 Multiply 定义为: public static class Experiment { public static int Multiply(int a, int b) { return a * b; } } 那么为什么…