DrScheme 中尾部调用优化是如何实现的?

发布于 2024-07-09 16:55:48 字数 107 浏览 7 评论 0原文

我听说蹦床是实施 TCO 的一种无效方法。 DrScheme(PLAI 方案,技术上)是如何做到的? 它是否以“正确”的方式执行此操作(即生成直接分支到尾部调用的汇编代码,而不是通过堆栈和蹦床)?

I've heard that trampolining is an ineffective way of implementing TCO. How does DrScheme (PLAI Scheme, technically) do it? Does it do it the 'right' way (that is, produce assembly code which directly branches to the tail call, instead of going through the stack and trampolining)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

本王不退位尔等都是臣 2024-07-16 16:55:48

MzScheme(现在的 PLT Scheme)的主要实现者 Matthew Flatt 在 2008 年 6 月告诉我,他们曾经编译为虚拟机代码,在这种情况下,很容易编写一个执行正确尾部调用的虚拟机。 然而现在,系统已经足够成熟,在 x86 上他们使用简单的 JIT。 无论哪种情况,都没有蹦床——PLT 计划的人知道他们的事。

Matthew Flatt, the chief implementor of MzScheme (now PLT Scheme) told me in June 2008 that at one time they compiled down to virtual-machine code, in which case it is easy to write a VM that does proper tail calls. Now, however, the system is mature enough that on x86 they use a simple JIT. In either case, there is no trampolining---the PLT Scheme guys know their business.

回梦 2024-07-16 16:55:48

PLT 方案的实施者在他们的 Google 群组中非常活跃,您可以在其中获取编写代码的人的快速回答。

不过,我不确定他们是这么读的,所以你最好的选择可能是在那里问。

The implementors of PLT Scheme are quite active in their Google group, where you can get a quick answer from the people who write the code.

I'm not sure they read SO, though, so your best bet would probably be asking there.

天涯沦落人 2024-07-16 16:55:48

Trampolines 用于将Scheme 代码转换为不支持正确尾部调用的目标语言X(C、Java 等)的实现。 PLT 方案采用 JIT 编译 - 因此不需要蹦床。 对于所使用的确切实施策略,请在 PLT 邮件列表上提问。

PS:您可以在 ReadScheme.org 上找到的各种“将Scheme编译为C”论文中阅读有关蹦床的更多信息。

Trampolines are used in implementations that translate Scheme code into a target language X (C, Java, etc.) that doesn't support Proper Tail Calls. PLT Scheme employs JIT-compilation - and therefore trampolines are not needed. For the exact implementation strategy used, ask the question on the PLT mailing list.

PS: You can read more on trampolines in the various "Compile Scheme to C" papers available on ReadScheme.org.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文