__align(n) 의 의미는??
흠.. align을 왜 맞춰야 하는것일까?? 궁굼하다는..
ARM 사에 나온 내용인데.. 흠흠.
cache 및 DMA를 사용할 경우 align을 32바이트로 맞춰야 한다는 내용이 있다고 한다.
흠 Cache에 더 연관 관계가 있는것 같다. 아래 내용을 확인해 봐야 겠다.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0301h/Babhejba.html
어찌됐던 __align은 아래와 같이 사용을 한다고 ARM site에 나와있다.
###
4.1.1. __align
__align 키워드는 n 변수를 정렬(바이트)하도록 컴파일러에 지시합니다.
__align은 스토리지 클래스 한정자이며 함수의 유형에 영향을 주지 않습니다.
구문
__align(n)
인수 설명:
n- 정렬 단위입니다.
n에 사용할 수 있는 값은 1, 2, 4 또는 8입니다.__align키워드는 변수 이름 바로 앞에 옵니다.
사용법
__align(n)은 선언되고 있는 변수의 기본 정렬이 n보다 적을 경우 유용합니다. 8바이트 정렬은 VFP 명령어로 대폭적인 성능 향상을 꾀할 수 있습니다.
__align은 extern 및 static과 함께 사용할 수 있습니다.
제한
__align은 스토리지 클래스 한정자이므로 다음에서 사용할 수 없습니다.
- typedefs 및 구조체 정의를 포함하는 유형
- 함수 매개변수
과정렬(overalign)만 가능합니다. 즉, 2바이트 개체를 4바이트로 정렬할 수 있지만 4바이트 개체를 2바이트로 정렬할 수는 없습니다.
예제
__align(8) char buffer[128]; /* buffer starts on eight-byte boundary */