使用 callvirt 调用 base.ToString() 如何导致 StackOverflow 异常?
IL提供了两种调用函数的语句,即call和callvirt。 Call 用于调用非虚函数或静态函数或编译器不想对引用进行空检查的任何函数。 callvirt 用于调用虚函…
为什么使用我自己的类的实例调用 DynamicMethod 会导致异常?
我正在通过使用 Reflection.Emit 在运行时创建自己的函数来学习 CIL。实际上,我很惊讶到目前为止事情是如此简单,但我遇到了一些我无法猜测的事情,…
C# 编译器不会优化不必要的强制转换
几天前,在溢出时为这个问题写答案时,我C# 编译器让我有点惊讶,它没有按照我的预期去做。查看以下代码片段: 第一: object[] array = new object[1…
C#:编写 MSIL 以添加预处理器指令
是否可以在 C# 中编写 MSIL 代码,在满足特定条件时将预处理器指令添加到代码中,例如 #warning?或者也许这可以通过反思来完成,我不知道。 我正在尝…
Silverlight 3.0 C# - 使用 Methodbuilder 创建 SET 方法,并使用 ILGenerator 和 Emit 添加 MSIL
Hej All 我有一些构建新 TYPE 运行时的代码,它使用 MethodBuilder 设置 GET 和 SET 方法。 (这是来自网络的示例,感谢写它的那个人,我不幸地失去了…
如何在任何基于 CLR 的语言程序集中找到给定类型的所有类型依赖性?
我试图找到给定类型所依赖的所有类型,包括接口、抽象类、枚举、结构等。我想加载一个程序集,并打印出其中定义的所有类型的列表,并且他们的依赖。 …
如何从 CIL 指令判断某个字段是读取还是写入?
我目前正在使用 Mono Cecil 从 C# 项目中提取数据。现在我需要检查每个方法中是否读取或写入了某个字段。 如何从 CIL 指令 正在读取或写入字段? 因为…
您将使用什么来构建新的 .NET 编译器?
我正在开发一种新的玩具语言,它将静态编译为 .NET 的 IL 代码。 我可以立即想到以下方法来实际生成 IL,但我对替代方案持开放态度: Cecil ILASM …
有没有办法查看 JITter 为给定的 C# / CIL 生成的本机代码?
在这个答案的评论中 (建议在整数乘法/除法上使用位移运算符,以提高性能),我询问这是否实际上会更快。在我的脑海里有一个想法,在某种水平上,某些…
用于紧凑框架的 ILASM?
我正在 Compact Framework 上使用 Linq 表达式树(来自 db4o/Mainsoft/Mono 端口)。由于 System.Reflection.Emit 不存在,我无法将 LambdaExpression…