base-execute
을 이해해야 execute
과 BASE
을 이해해야합니다. 또한 스택 효과에서 i*x
및 j*x
을 읽는 방법을 설명합니다.
execute
은 실행 토큰 xt
을 취하여 실행함으로써 작동합니다. ' 1+ execute
은 1+
과 동일합니다. 그러나 xt
을 미리 선택하지 않아도 스택에 전달할 수 있기 때문에 execute
을 사용해야하는 이유가 있습니다. 예를 들어 :
: exec-twice dup >r execute r> execute ;
2 ' 1+ exec-twice . (this outputs 4)
BASE
숫자베이스는 입력 및 출력을 위해 사용할 것인지를 제어하는 변수이다. BASE
은 초기에 10입니다. 따라서 5 2 BASE ! .
은 101
(기본 2에서 5)을 출력합니다.
base-execute
그들을 함께 넣는다 : 그것은 BASE
u
xt
의 변경을 실행 한 후 이전 값으로 복원 BASE
. 그것의 구현은 다음과 같습니다 i*x xt u -- j*x
지금
: squared (n1 -- n2) dup * ;
: squares (n --) 0 do i squared . loop ;
10 squares (0 1 4 9 16 25 36 49 64 81)
: hex-execute (i*x xt -- j*x) 16 base-execute ;
10 ' squares hex-execute (0 1 4 9 10 19 24 31 40 51)
10 squares (0 1 ... 81 we're back to decimal)
: 여기
: base-execute BASE @ >r BASE ! execute r> BASE ! ;
은 사용 예입니다 당신이 연결
스택 표기 문서에 대한 대부분의 정보를 가지고 당신 그 효과를 읽을 필요가있다. i*x -- j*x
은 무언가가 일 수 있음을 의미하지만 무엇을 지정하지는 않습니다. 이 경우 정확한 스택 효과는 xt
에 달려 있습니다.
는 주어진
xt
와 스택 효과를 알고
xt
의 스택 효과의 양면과
i*x
및
j*x
를 교체하십시오.
xt
경우
예를 들어, ' .
당신은 n --
입니다 .
의 스택 효과를 볼 것입니다. 이 경우 base-execute
의 스택 효과는 n xt-of-. u --
으로 생각할 수 있습니다.
매우 유익하지만 위의 내용에서 * base-execute을 사용하는 방법이 명확하지 않습니다. 대답은 기본적인 샘플 사용법 또는 2 개로 향상됩니다. – agc
좋은 지적, 예제를 추가하겠습니다. –
감사! 그냥 평범한'base-execute'는 재미 있습니다. 즉,'10 '은 3 진법을 3 번 기본 실행하고, 10은'기본 실행 '을 의미합니다. – agc