최근에 comp.lang.forth에 나는 이해하기 힘든 쿠아스 하크 (Koos Haak)의 친절한 코드를 발견했습니다.2> r 및 2r>은 어떻게 작동합니까?
괄호 사이의 숫자를 합하거나 곱하기로되어 있습니다. 예를 들어,
(1 2 3 +) ok
. 6 ok
편의를 위해, 난 여기가 재현됩니다 :
: (
depth 1+ r> 2>r
;
: cond
depth j >
;
: done
2r> rdrop 2>r
;
: +)
begin cond
while +
repeat
done
;
: *)
begin cond
while *
repeat
done
;
나는 문구 r> 2>r
및 2r> rdrop 2>r
참조하십시오. 그러나 나는 그들이하는 일에 대해 오히려 혼란스러워합니다. 오픈 괄호의 스택 깊이가 어떻게 든 리턴 스택에 숨겨져 있다고 생각합니다. 그러나, 나는 그것을 얻지 않는다.
반환 스택에는 어떤 영향이 있습니까? Gforth 문서에서
나는 참조 :r> R:w – w core “r-from”
2>r d – R:d core-ext “two-to-r”
2r> R:d – d core-ext “two-r-from”
rdrop R:w – gforth “rdrop”
w Cell, can contain an integer or an address
d double sized signed integer
이는 w와 D 사이의 변환을 할 수있는 뭔가가 있나요?
그래서 gforth 문서에서 'd'데이터 유형은 두 개의 데이터 요소로 표시되고 'w'는 하나만있는 것으로 추측됩니다. 이제 200x 레퍼런스를 갖게되어 기쁩니다. – beeflobill