2017-10-13 3 views
1

나는 임베디드 시스템에서 직접 학습하고, 레오 브로디 (Leo Brodie)의 Starting Forth을 텍스트로 사용하려고합니다. 내가 사용중인 Forth 버전은 Arduino Uno로 번쩍 번쩍 한 328eForth (ATmega328에 eforth 포트)입니다.왜 328eForth에서 'DO LOOP'가 누락 되었습니까?

DO LOOP 단어가 328eForth에 구현되어 있지 않은 것으로 나타났습니다. Brodie와의 학습에 문제가 있습니다. 그러나 "WORDS"를 사용하여 사전을 보면 일련의 반복 단어가 있음을 알 수 있습니다. 다음 번 AFT가 다시 시작될 때까지 다른 사람들 사이에서 반복하십시오. 왜 DO LOOP는 328eForth에서

Q1을 생략 : 다음과 같이

내 질문

은?

Q2 기존의 다른 단어로도 구현할 수 있습니까? 그렇다면, 왜 그렇게하지 않았습니까? (나는 이 될 것임에 틀림 없다. DO LOOP 누락에 대한 타당한 이유 ...)

Q3 328eForth 루핑 단어에 대한 몇 가지 주석이 달린 예제를 제공 할 수 있습니까?

+0

에 약간의 폭로가 추가되었습니다. – meagar

답변

6

1 : 다른 루프 구성을 선택했습니다.

Q2 : 단어 FORNEXT은 아래로 0 실행에 0을 포함 시간을 정확히 지정된 수를 계산 유사한 기능을 수행합니다.
(n2 n1 --) DO ... LOOP은 항상 최소 한 번 실행되므로 추가 (정신적) 부기가 필요합니다. 사람들은 내가 기억할 수있는 한 오래 전에 그걸에 대해 에 대해 불평하고있다.

질문 3 : 382eforth documentation ForthArduino_1.pdf에는 몇 가지 예가 포함되어 있습니다.


편집 : 포스트 당 하나 개의 질문을하십시오 Q2

+2

루프 단계가 음수 일 때 DO LOOP의 주요 문제점이 발생합니다. 또는 적어도 그것이 어떤 사람들이 생각하는 것입니다. iForth의 첫 번째 버전은 FOR NEXT 만 있었지만 2 년간의 어려움을 겪은 후에 나는 그 아이디어가 역효과라고 결론을 내 렸습니다. DO LOOP은 FOR NEXT보다 훨씬 유연합니다. –