MOVE — 메모리 복사
MOVE — 메모리 복사
MOVE는 addr1의 u개의 연속된 주소 단위 내용을 addr2의 u개의 연속된 주소 단위로 복사하는 코어 단어예요.
본문
스택 효과
( addr1 addr2 u -- )
설명
u가 0보다 크면, addr1에 있는 u개의 연속된 주소 단위 내용을 addr2에 있는 u개의 연속된 주소 단위로 복사해요. MOVE가 완료된 후 addr2에 있는 u개의 연속된 주소 단위에는 이동 전에 addr1에 있던 것이 정확히 담겨 있어요.
참조 (See)
- 17.6.1.0910 CMOVE
- 17.6.1.0920 CMOVE>
- A.6.1.1900 MOVE
합리성 (Rationale)
CMOVE와 CMOVE>는 Forth 83의 주요 이동 연산자였어요. 그들은 적절히 호출되면 전파(propagation)를 암시하는 이동 동작을 지정해요. 일부 하드웨어에서는 이 특정 동작을 최상의 이동 명령으로 달성할 수 없어요. 게다가 CMOVE와 CMOVE>는 문자를 이동하는데, Forth에는 주소 단위를 다룰 수 있는 이동 명령이 필요해요. 그래서 MOVE가 정의되어 Core 워드셋에 추가되었고, CMOVE와 CMOVE>는 String 워드셋으로 옮겨졌어요.
테스트 (Testing)
T{ FBUF FBUF 3 CHARS MOVE -> }T
\ BIZARRE SPECIAL CASE
T{ SEEBUF -> 20 20 20 }T
T{ SBUF FBUF 0 CHARS MOVE -> }T
T{ SEEBUF -> 20 20 20 }T
T{ SBUF FBUF 1 CHARS MOVE -> }T
T{ SEEBUF -> 12 20 20 }T
T{ SBUF FBUF 3 CHARS MOVE -> }T
T{ SEEBUF -> 12 34 56 }T
T{ FBUF FBUF CHAR+ 2 CHARS MOVE -> }T
T{ SEEBUF -> 12 12 34 }T
T{ FBUF CHAR+ FBUF 2 CHARS MOVE -> }T
T{ SEEBUF -> 12 34 34 }T