为什么328eForth中缺少"DO LOOP"?

Kev*_*nHW 1 arduino forth

我正在尝试直接在嵌入式系统中学习Forth,并使用Leo Brodie的Starting Forth作为文本.我正在使用的Forth版本是328eForth(eforth到ATmega328的一个端口),我已经闪现成Arduino Uno.

似乎DO LOOP字没有在328eForth中实现 - 这对我与Brodie的学习产生了麻烦.但是使用"WORDS"查看词典表明存在一系列循环词,例如BEGIN直到下一个AFT EXIT AGE REPEAT等.

我的问题如下:

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

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

Q3你能举一些328eForth循环词的注释例子吗?

Hen*_*eld 6

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

Q2:单词FORNEXT执行一个类似的功能,它只计数到0 并且完全按指定的次数运行,包括零.
( n2 n1 -- ) DO ... LOOP总是至少执行一次,这需要额外的(精神)簿记.人们一直在抱怨我早就记得了.

问题3:382eforth文档 ForthArduino_1.pdf包含一些示例.


编辑:向Q2添加了一些曝光

  • 当循环步骤为负时,发生DO LOOP的主要问题.或者至少这是有些人的想法.iForth的第一个版本只有FOR NEXT,但经过两年的努力,我得出结论认为这个想法适得其反.DO LOOP比FOR NEXT灵活得多. (2认同)