MOVE — 메모리 복사

MOVE — 메모리 복사

MOVEaddr1u개의 연속된 주소 단위 내용을 addr2u개의 연속된 주소 단위로 복사하는 코어 단어예요.

출처: MOVE — Forth 2012 Standard

본문

스택 효과

( 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)

CMOVECMOVE>는 Forth 83의 주요 이동 연산자였어요. 그들은 적절히 호출되면 전파(propagation)를 암시하는 이동 동작을 지정해요. 일부 하드웨어에서는 이 특정 동작을 최상의 이동 명령으로 달성할 수 없어요. 게다가 CMOVECMOVE>는 문자를 이동하는데, Forth에는 주소 단위를 다룰 수 있는 이동 명령이 필요해요. 그래서 MOVE가 정의되어 Core 워드셋에 추가되었고, CMOVECMOVE>는 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

더 알아보기 (Learn more)

출처: MOVE — Forth 2012 Standard