ALIGN — 데이터 공간 정렬
ALIGN — 데이터 공간 정렬
ALIGN은 데이터 공간 포인터가 정렬되어 있지 않으면 그것을 정렬하는 데 충분한 공간을 예약하는 코어 단어예요.
본문
스택 효과
( -- )
데이터 공간 포인터가 정렬되어 있지 않으면, 그것을 정렬하기에 충분한 공간을 확보해요.
참조 (See)
- 3.3.3 Data space(데이터 공간)
- 3.3.3.1 Address alignment(주소 정렬)
- A.6.1.0705 ALIGN
합리성 (Rationale)
이 표준은 다양한 CPU 아키텍처에 걸친 이식성을 제공하려고 노력했어요. 이식성 문제의 흔한 원인 중 하나는 일부 CPU에서 셀 정렬(cell-aligned) 주소를 요구한다는 것이에요. 그러한 시스템에서는 C,로 만든 데이터 구조를 만들고 순회하는 데 ALIGN과 ALIGNED가 필요할 수 있어요. 구현자는 기능이 필요 없는 시스템에서 이 단어들을 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