7.8.15. REQUIRE8 및 PRESERVE8

REQUIRE8 지시어는 현재 파일에 스택의 8바이트 정렬이 필요함을 지정하고, 링커에 알림을 제공하기 위해 REQ8 빌드 특성을 설정합니다.

PRESERVE8 지시어는 현재 파일에서 스택의 8바이트 정렬을 유지함을 지정하고, 링커에 알림을 제공하기 위해 PRES8 빌드 특성을 설정합니다.

링커에서는 스택의 8바이트 정렬을 필요로 하는 코드가 직접적으로든 간접적으로든 스택의 8바이트 정렬을 유지하는 코드에 의해서만 호출되는지 검사합니다.

구문

REQUIRE8 {bool}
PRESERVE8 {bool}

인수 설명:

bool

선택적 부울 상수인 {TRUE} 또는 {FALSE}입니다.

사용법

필요한 경우 코드에서 스택의 8바이트 정렬을 유지하면 PRESERVE8을 사용하여 PRES8 빌드 특성을 파일에 설정합니다. 코드에서 스택의 8바이트 정렬을 유지하지 않으면 PRESERVE8 {FALSE}를 사용하여 PRES8 빌드 특성이 설정되지 않도록 합니다.

Note

PRESERVE8PRESERVE8 {FALSE}를 둘 다 생략하면 어셈블러에서 sp를 수정하는 명령어를 검사하여 PRES8 빌드 특성을 설정할지 여부를 결정합니다. PRESERVE8을 명시적으로 지정하는 것이 좋습니다.

다음을 사용하여 경고를 활성화할 수 있습니다.

armasm --diag_warning 1546

자세한 내용은 명령 구문을 참조하십시오.

이렇게 하면 다음과 같은 경고가 표시됩니다.

"test.s", line 37: Warning: A1546W: Stack pointer update potentially 
                                breaks 8 byte stack alignment
       37 00000044         STMFD    sp!,{r2,r3,lr}

예제

REQUIRE8
REQUIRE8     {TRUE}      ; equivalent to REQUIRE8
REQUIRE8     {FALSE}     ; equivalent to absence of REQUIRE8
PRESERVE8    {TRUE}      ; equivalent to PRESERVE8
PRESERVE8    {FALSE}     ; NOT exactly equivalent to absence of PRESERVE8
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential