gpt4 book ai didi

forth - Forth LEAVE ... LOOP 是如何实现的,因为事先不知道 LEAVE 的数量?

转载 作者:行者123 更新时间:2023-12-01 00:11:31 27 4
gpt4 key购买 nike

LOOP 一词被描述为“解析所有未解析的 LEAVE 事件的目的地”。 (强调我的)

与 IF ... ELSE ... THEN 的前向引用数始终为 1 不同,LOOP 对 LEAVE 的数量没有限制。那怎么实现呢?

我想到的一种方法是始终将 LEAVE 的数量保持在堆栈顶部。每个 LEAVE 都会增加此计数器并将其置于其下。 LOOP 从顶部读取计数器并解析那么多引用。但这似乎是一个便宜的伎俩。

真正的 Forth 系统如何实现这种循环?我不需要 teh codez(将 Forth 作为学习经验实现),只需要概念。

最佳答案

在 SP-Forth 中,循环控制参数包括 LOOP 之后的索引、限制和地址。所以,不需要解析 LEAVE在编译时,它知道运行时循环控制参数的地址。
另一种方法是将控制流堆栈深度存储在 DO 上。 ,将未解析的前向引用放在控制流堆栈上的所有其他已放置值(使用存储的深度)下 LEAVE ,然后解析 LOOP 上所有放置的前向引用.
看我的 high-level implementationDO LOOP基于BEGIN UNTILAHEAD THEN (剧透警告)。

关于forth - Forth LEAVE ... LOOP 是如何实现的,因为事先不知道 LEAVE 的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58304029/

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