( «®¢ ¥¬¥¤«¥®£® ¢ë¯®«¥¨ï, ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ª®¬¯¨«ï樨
横«®¢ ¢ ⥫¥ ¢ë᮪®ã஢¥¢®£® ®¯à¥¤¥«¥¨ï.
-¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
८¡à §®¢ ¨¥ ¨§ 16-à §à冷£® ¢ 32-à §àï¤ë© ª®¤ - 1995-96££
¥¢¨§¨ï - á¥âï¡àì 1999
)
HEX
: DO \ 94
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ ®¬¯¨«ïæ¨ï: ( C: -- do-sys )
\ ®«®¦¨âì do-sys á⥪ ã¯à ¢«¥¨ï. ®¡ ¢¨âì ᥬ ⨪㠢६¥¨ ¢ë¯®«¥¨ï,
\ ¤ ãî ¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥¨î. ¥¬ ⨪ ¥§ ¢¥àè¥ ¤® à §à¥è¥¨ï
\ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
\ à¥¬ï ¢ë¯®«¥¨ï: ( n1|u1 n2|u2 -- ) ( R: -- loop-sys )
\ áâ ®¢¨âì ¯ à ¬¥âàë 横« ¨¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1. ¥®¯à¥¤¥«¥ ï
\ á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ¥ ®¤®£® ⨯ . á¥, ç⮠㦥
\ 室¨«®áì á⥪¥ ¢®§¢à ⮢, áâ ®¢¨âáï ¥¤®áâã¯ë¬ ¤® â¥å ¯®à, ¯®ª ¥
\ ¡ã¤ãâ ã¡à ë ¯ à ¬¥âàë 横« .
?COMP
['] C-DO INLINE,
SetOP 0x68 C, DP @ 4 ALLOT
SetOP 0x52 C, \ PUSH EDX
SetOP 0x53 C, \ PUSH EBX
4 ALIGN-NOP
DP @ DUP TO :-SET
; IMMEDIATE
: ?DO \ 94 CORE EXT
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ ®¬¯¨«ïæ¨ï: ( C: -- do-sys )
\ ®«®¦¨âì do-sys á⥪ ã¯à ¢«¥¨ï. ®¡ ¢¨âì ᥬ ⨪㠢६¥¨ ¢ë¯®«¥¨ï,
\ ¤ ãî ¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥¨î. ¥¬ ⨪ ¥§ ¢¥àè¥ ¤® à §à¥è¥¨ï
\ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
\ à¥¬ï ¢ë¯®«¥¨ï: ( n1|u1 n2|u2 -- ) ( R: -- | loop-sys )
\
᫨ n1|u1 à ¢® n2|u2, ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ á ¬¥áâ , ¤ ®£® ¯®âॡ¨â¥«¥¬
\ do-sys. ç¥ ãáâ ®¢¨âì ¯ à ¬¥âàë 横« ¨¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1
\ ¨ ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ áà §ã § ?DO. ¥®¯à¥¤¥«¥ ï
\ á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ¥ ®¤®£® ⨯ . á¥, ç⮠㦥
\ 室¨«®áì á⥪¥ ¢®§¢à ⮢, áâ ®¢¨âáï ¥¤®áâã¯ë¬ ¤® â¥å ¯®à, ¯®ª ¥
\ ¡ã¤ãâ ã¡à ë ¯ à ¬¥âàë 横« .
?COMP
OP0 @ :-SET UMAX TO :-SET
['] NIP DUP INLINE, INLINE,
0xBB C, HERE 4 ALLOT
['] C-?DO INLINE,
DP @ DUP TO :-SET
; IMMEDIATE
: LOOP \ 94
\ â¥à¯à¥â æ¨ï: ( C: do-sys -- )
\ ®¡ ¢¨âì ᥬ ⨪㠢६¥¨ ¢ë¯®«¥¨ï, ¤ ãî ¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥¨î.
\ §à¥è¨âì ¢á¥ ¯®ï¢«¥¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ®© do-sys ¨ á«¥¤ãî饩
\ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï ¤«ï ¢ë¯®«¥¨ï á«®¢ § LOOP.
\ à¥¬ï ¢ë¯®«¥¨ï: ( -- ) ( R: loop-sys1 -- | loop-sys2 )
\ ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横« ¥¤®áâã¯ë.
\ ਡ ¢¨âì ¥¤¨¨æã ª ¨¤¥ªáã 横« .
᫨ ¨¤¥ªá 横« áâ « à ¢ë¬ ¯à¥¤¥«ã,
\ ã¡à âì ¯ à ¬¥âàë 横« ¨ ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ áà §ã § 横«®¬. ç¥
\ ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ á ç « 横« .
?COMP
24 04FF W, C, \ inc dword [esp]
HERE 2+ - DUP SHORT? SetOP SetJP
IF
71 C, C, \ jno short
ELSE
4 - 0F C, 81 C, , \ jno near
THEN SetOP
0C24648D , \ lea esp, 0c [esp]
DP @ SWAP !
; IMMEDIATE
: +LOOP \ 94
\ â¥à¯à¥â æ¨ï: ( C: do-sys -- )
\ ®¡ ¢¨âì ᥬ ⨪㠢६¥¨ ¢ë¯®«¥¨ï, ¤ ãî ¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥¨î.
\ §à¥è¨âì ¢á¥ ¯®ï¢«¥¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ®© do-sys ¨ á«¥¤ãî饩
\ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï ¤«ï ¢ë¯®«¥¨ï á«®¢ § LOOP.
\ à¥¬ï ¢ë¯®«¥¨ï: ( n -- ) ( R: loop-sys1 -- | loop-sys2 )
\ ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横« ¥¤®áâã¯ë.
\ ਡ ¢¨âì n ª ¨¤¥ªáã 横« .
᫨ ¨¤¥ªá 横« ¥ ¯¥à¥á¥ª £à ¨æã ¬¥¦¤ã
\ ¯à¥¤¥«®¬ 横« ¬¨ãá ¥¤¨¨æ ¨ ¯à¥¤¥«®¬ 横« , ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ á
\ ç « 横« . ç¥ ã¡à âì ¯ à ¬¥âàë 横« ¨ ¯à®¤®«¦¨âì ¢ë¯®«¥¨¥ áà §ã
\ § 横«®¬.
?COMP
['] ADD[ESP],EAX INLINE,
['] DROP INLINE,
HERE 2+ - DUP SHORT? SetOP SetJP
IF
71 C, C, \ jno short
ELSE
4 - 0F C, 81 C, , \ jno near
THEN SetOP
0C24648D , \ lea esp, 0c [esp]
DP @ SWAP !
; IMMEDIATE
: I \ 94
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ 믮«¥¨¥: ( -- n|u ) ( R: loop-sys -- loop-sys )
\ n|u - ª®¯¨ï ⥪ã饣® (¢ãâ॥£®) ¨¤¥ªá 横« . ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï
\ ¢®§¨ª ¥â, ¥á«¨ ¯ ଥâàë 横« ¥¤®áâã¯ë.
?COMP ['] C-I INLINE,
; IMMEDIATE
: J \ 94
?COMP ['] C-J INLINE,
; IMMEDIATE
: LEAVE \ 94
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ 믮«¥¨¥: ( -- ) ( R: loop-sys -- )
\ ¡à âì ⥪ã騥 ¯ à ¬¥âàë 横« . ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨
\ ®¨ ¥¤®áâã¯ë. த®«¦¨âì ¢ë¯®«¥¨¥ áà §ã § á ¬ë¬¨ ¢ãâ२¬¨ DO ... LOOP
\ ¨«¨ DO ... +LOOP.
?COMP
SetOP 0824648D , \ lea esp, 08 [esp]
SetOP C3 C, \ ret
; IMMEDIATE
: UNLOOP \ 94
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ 믮«¥¨¥: ( -- ) ( R: loop-sys -- )
\ ¡à âì ¯ à ¬¥âàë 横« ⥪ã饣® ã஢ï. UNLOOP âॡã¥âáï ¤«ï ª ¦¤®£®
\ ãà®¢ï ¢«®¦¥¨ï 横«®¢ ¯¥à¥¤ ¢ë室®¬ ¨§ ®¯à¥¤¥«¥¨ï ¯® EXIT.
\ ¥®¤®§ ç ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横« ¥¤®áâã¯ë.
?COMP
SetOP 0C24648D , \ lea esp, 0c [esp]
; IMMEDIATE
DECIMAL