| |||
| Home > ARM 컴파일러 참조 > 컴파일러 관련 기능 > 8 바이트 정렬 기능 | |||
다음 목록은 ARM 컴파일러의 8바이트 정렬 기능을 요약한 것입니다.
Procedure Call Standard for the ARM Architecture(AAPCS)에 따라 스택은 모든 외부 인터페이스에서 8바이트 단위로 정렬됩니다. ARM 컴파일러와 C 라이브러리는 스택의 8바이트 정렬이 유지되도록 합니다. 또한 기본 C 라이브러리 메모리 모델은 스택의 8바이트 정렬을 유지합니다.
RealView® Compilation
Tools(RVCT) 버전 2.0 이상의 컴파일러에서 모든 코드는 REQUIRE8 및 PRESERVE8 지시문을
사용하여 컴파일됩니다. 따라서 기존 어셈블리 파일, 오브젝트 파일 또는 라이브러리가 8바이트 스택 정렬을 유지하는지
확인하고 필요한 경우 이를 수정해야 합니다. 자세한 내용은 RealView Compilation Tools
버전 3.0 핵심 설명서 및 RealView Compilation
Tools 버전 3.0 링커 및 유틸리티 설명서를
참조하십시오.
RVCT 버전 2.0 이상의 컴파일러에서는 double 및 long
long 데이터 타입은 8바이트 단위로 정렬됩니다. 따라서 ARMv5TE 이상에서 LDRD 및 STRD 명령어를
효율적으로 사용할 수 있습니다.
RVCT 버전 2.0 이상의 컴파일러에서는 이전의 ADS ABI(ADS ABI 한정자 참조)와 호환되는 코드를 컴파일할 수 있도록 --apcs
/adsabi 옵션을 지원합니다. 그러나 이 옵션은 향후 제공되지 않을 예정이며 이후 릴리스에서 제거됩니다.
어셈블러 코드에서 LDRD 또는 STRD 명령어를
사용하여 C 또는 C++ 코드로 정의된 데이터 오브젝트에 액세스할 경우, 이 데이터 오브젝트가 제대로 정렬되도록 하기
위해 __align(8) 스토리지 클래스 지정자를 사용해야 합니다.
__align(8)은 정규화된 오브젝트가 8바이트 단위로 정렬되도록 보장해줄
뿐입니다. 따라서 필요할 경우 구조체를 명시적으로 패딩해야 합니다.
__align( 지정자에
대한 자세한 내용은 스토리지 클래스 한정자를
참조하십시오.n)
malloc(), realloc() 및 calloc()의
기본 구현은 8바이트 단위로 정렬되는 힙입니다.
ARM 컴파일러가 제공하는 힙 구현 및 자체 힙 구현 작성 방법에 대한 자세한 내용은 스토리지 관리 조정을 참조하십시오.
alloca()의 기본 구현은 8바이트 단위로 정렬되는
메모리 블록입니다. 이 C 라이브러리 확장에 대한 자세한 내용은 alloca()를 참조하십시오.