如何将 CIL 转换为 LLVM IR?
我想将 C# 编译为 LLVM IR。所以我认为将编译的 CIL 翻译为 LLVM IR 是我可以尝试的一种方法。 我可以使用一些工具,例如 vmkit 和 mono-llvm。 有人…
Mono.Cecil:调用基类'来自其他程序集的方法
如何按名称获取对基类方法的 MethodReference? 我已经尝试过了 type.BaseType.Resolve().Methods; ,如果我将包含基类的 dll 添加到 assemblyresolve…
Mono.Cecil:操作可能在运行时不稳定
我遵循此处的提示,我什至将以下几行放入: var MSILWorker = prop.SetMethod.Body.GetILProcessor(); MSILWorker.Body.InitLocals = true; 我在两个…
在 .NET 中创建 DynamicType 实现接口但使用基类的成员实现
我正在尝试生成一个实现接口的动态类,但其中一个或多个成员已存在于基中。我用 C# 编译了以下代码,并在反射器中检查了它,看看 C# 编译器做了什么。…
编译为 .Net 中的本机代码是否会完全删除 MSIL?
我想知道,在反汇编 .Net 代码(Redgate .Net Reflector 等)的情况下,使用 Ngen 将代码编译为本机是否更安全?也就是说,这是否意味着有人现在需要 …
使用 Reflection.Emit 调用私有构造函数?
我正在尝试发出以下 IL: LocalBuilder pointer = il.DeclareLocal(typeof(IntPtr)); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Stloc, pointer); i…
IL 发出 - 存储然后加载时操作可能会破坏运行时的稳定性
嘿,所以我有以下 IL: il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ret); 效果很好。它基本上返回给定的参数。 然而,这 il.Emit(OpCodes.Ldarg_0); …
何时以及如何使用 Ldvirtftn 操作码?
下面的示例程序是我试图掌握 ldvirtftn 操作码的用法。 您会看到名称表明这是将虚拟函数指针加载到堆栈时使用的操作码。在示例代码中,我创建了一个具…
.NET CIL 代码大小
当查看编译的 CIL 时,我注意到代码大小包含在编译的 CIL 中。它被注释掉了。下面是一个 C# 示例: static void MakeACar() { Car myCar = new Car();…
callvirt 的底层是如何工作的?
我试图了解 CLR 如何实现引用类型和多态性。我参考了 Don Box 的 Essential .Net Vol 1,它对于简化大部分内容有很大帮助。但是,当我尝试使用一些 IL…
编译成 MSIL 的代码大小是否一定与代码速度相关?
我一直在 Visual Basic 中尝试不同类型的本机代码操作,然后使用 Reflector 检查代码以查看生成的 MSIL 类型。例如,我想知道,在一行 If-Then-Else …