gpt4 book ai didi

.net-4.0 - 轻量级代码生成(LCG)死了吗?

转载 作者:行者123 更新时间:2023-12-04 15:37:40 29 4
gpt4 key购买 nike

在 .NET 2.0-3.5 框架中,当不需要类结构来支持它们时,LCG(也称为 DynamicMethod 类)是在运行时发出轻量级方法的一种不错的方式。

在 .NET 4.0 中,表达式树现在支持语句和块,因此似乎提供了足够的功能来构建您可能需要从这种方法中获得的任何功能,并且可以以比直接发出 CIL 更容易和更安全的方式构建操作码。 (此声明来自今天将我们一些最复杂的 LCG 代码转换为使用表达式树构建和编译的实验。)

那么有什么理由可以在任何新代码中使用 LCG 吗?有什么它可以做而表达式树不能做的事情吗?或者它现在是一个“死”的功能?

最佳答案

在没有任何中间步骤的情况下直接构建 CIL 是没有意义的。但是使用您自己的最终以 IL 为目标的中间语言是完全没问题的。表达式树等是不够的——它只是一种语言,而在实现 DSL 时,您需要许多不同的语义。

你可以很容易地发出不安全的代码(有很多 ldftns 等),你可以发出尾调用(不确定表达式是否可行),对虚方法的非虚调用,你可以有效地构造带有标签和跳转的大型状态自动机等. 表达式树是如此有限,以至于我根本无法理解如何将它们与原始 CIL 进行比较。

关于.net-4.0 - 轻量级代码生成(LCG)死了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001986/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com