gpt4 book ai didi

tail-recursion - CIL (MSIL) 实例方法中的尾调用递归

转载 作者:行者123 更新时间:2023-12-04 06:37:44 24 4
gpt4 key购买 nike

背景:我正在为学校项目编写 .NET 编译器(非常类似于 C#)。我目前正在尝试添加的功能之一是方法内的尾调用递归。

更多信息:在 CIL 中,“this”被传递到实例方法中,就像它只是另一个参数一样。因此,访问静态方法的第一个参数,您将发出 ldarg.0,但访问实例方法的第一个参数,您将发出 ldarg.1,并在实例方法中访问“this”,您将发出 ldarg.0 . (实例方法比我想象的更类似于扩展方法。)

问题:您可以使用 starg.0 设置“this”而没有任何副作用吗?

为什么这是有问题的:方法是否是实例方法是用 MethodBuilder 设置的,这有点像黑盒子。尽管“this”看起来就像任何其他参数,据我所知,一些 JIT 编译器会单独跟踪“this”并根据此值更改其行为。如果在实例方法中设置“this”时有副作用,那么如何避免它们?

最佳答案

您可能想看看 how F# implements tail-call .

关于tail-recursion - CIL (MSIL) 实例方法中的尾调用递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203315/

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