ALIGN — 데이터 공간 정렬

ALIGN — 데이터 공간 정렬

ALIGN은 데이터 공간 포인터가 정렬되어 있지 않으면 그것을 정렬하는 데 충분한 공간을 예약하는 코어 단어예요.

출처: ALIGN — Forth 2012 Standard

본문

스택 효과

( -- )

데이터 공간 포인터가 정렬되어 있지 않으면, 그것을 정렬하기에 충분한 공간을 확보해요.

참조 (See)

  • 3.3.3 Data space(데이터 공간)
  • 3.3.3.1 Address alignment(주소 정렬)
  • A.6.1.0705 ALIGN

합리성 (Rationale)

이 표준은 다양한 CPU 아키텍처에 걸친 이식성을 제공하려고 노력했어요. 이식성 문제의 흔한 원인 중 하나는 일부 CPU에서 셀 정렬(cell-aligned) 주소를 요구한다는 것이에요. 그러한 시스템에서는 C,로 만든 데이터 구조를 만들고 순회하는 데 ALIGNALIGNED가 필요할 수 있어요. 구현자는 기능이 필요 없는 시스템에서 이 단어들을 no-op으로 정의할 수 있어요.

테스트 (Testing)

T{ UA-ADDR ALIGNED -> A-ADDR }T
T{       1 A-ADDR C!         A-ADDR       C@ ->       1 }T
T{    1234 A-ADDR !          A-ADDR       @  ->    1234 }T
T{ 123 456 A-ADDR 2!         A-ADDR       2@ -> 123 456 }T
T{       2 A-ADDR CHAR+ C!   A-ADDR CHAR+ C@ ->       2 }T
T{       3 A-ADDR CELL+ C!   A-ADDR CELL+ C@ ->       3 }T
T{    1234 A-ADDR CELL+ !    A-ADDR CELL+ @  ->    1234 }T
T{ 123 456 A-ADDR CELL+ 2!   A-ADDR CELL+ 2@ -> 123 456 }T

더 알아보기 (Learn more)

출처: ALIGN — Forth 2012 Standard