2017-10-13 103 views
1

我试图直接在嵌入式系统中学习Forth,并使用由Leo Brodie作为文本的Starting Forth。我正在使用的Forth版本是328eForth(从eforth到ATmega328的一个端口),我已经闪入Arduino Uno。为什么在328eForth缺少'DO LOOP'?

看起来DO LOOP的单词并没有在328eForth中实现 - 这让我在与Brodie学习时感到纠结。但是使用“文字”来查看字典表明存在一系列循环词,例如,开始直到下一次退出再次退出等等。

我的问题如下:

Q1为什么DO LOOP从328eForth省略?

Q2 DO LOOP可以用其他现有词语实现吗?如果是这样,如何,如果不是为什么? (我想必须有一个非常很好的理由遗漏的DO LOOP ...)

问题3你可以给一些328eForth循环词的评论示例?

+0

请让每一个岗位的问题。 – meagar

回答

6

Q1:选择了不同的循环结构。

Q2:这句话FORNEXT执行类似的功能,只是倒数至0 运行完全指定的次数,包括零。
(n2 n1 --) DO ... LOOP总是运行至少一次,这需要额外的(精神)簿记。据我所知,人们一直在抱怨 。

问题3:382eforth documentation ForthArduino_1.pdf包含一些示例。


编辑:增加了一些暴露在Q2

+2

DO循环的主要问题发生在循环步骤为负时。或者至少这是一些人的想法。 iForth的第一个版本只有FOR NEXT,但经过两年的挣扎之后,我断定这个想法会适得其反。 DO LOOP比FOR NEXT更灵活。 –