| |||
Home > 컴파일러 관련 기능 > 명령어 내장 함수 > __strex | |||
이 내장 함수는 STREX{size} 형식의 명령어를 컴파일러가 생성한 명령어 스트림에 삽입합니다.
이를 통해 C 또는 C++ 코드에서 STREX 명령어를 사용하여 메모리에 데이터를 저장할 수
있습니다.
int __strex(unsigned int val, volatile void *ptr)
인수 설명:
STREX 명령어를 지원하지 않는 타겟에 대해 컴파일하는 경우 컴파일러는 __strex 내장
함수를 인식하지 않습니다. 이 경우 컴파일러에서 경고 또는 오류를 생성합니다.
__strex 내장 함수는 더블워드 데이터에 대한 액세스를 지원하지
않습니다. 지원되지 않는 액세스 너비를 지정하면 컴파일러에서 오류를 생성합니다.
int foo(void)
{
int loc=0xff;
return(!__strex(0x20, (volatile char *)loc));
}
--cpu=6k 명령 행 옵션을 사용하여 이 코드를 컴파일하면 다음이 생성됩니다.
||foo|| PROC MOV r0,#0xff MOV r2,#0x20 STREXB r1,r2,[r0] RSBS r0,r1,#1 MOVCC r0,#0 BX lr ENDP
어셈블러 설명서에서 4-38페이지의 LDREX 및 STREX