4.7.20. __ldrex

이 내장 함수는 LDREX{size} 형식의 명령어를 컴파일러가 생성한 명령어 스트림에 삽입합니다. 이를 통해 LDREX 명령어를 사용하여 C 또는 C++ 코드의 메모리에서 데이터를 로드할 수 있습니다.

구문

unsigned int __ldrex(volatile void *ptr)

인수 설명:

ptr

메모리에서 로드할 데이터의 주소를 가리킵니다. 로드할 데이터의 크기를 지정하려면 매개변수를 적절한 정수 유형으로 캐스트합니다.

Table 4.8. __ldrex 내장 함수가 지원하는 액세스 너비 

명령어로드된 데이터 크기C 캐스트
LDREXB부호 없는 바이트(char *)
LDREXH부호 없는 하프워드(short int *)
LDREX워드(int *)

반환 값

__ldrex 내장 함수는 ptr가 가리키는 메모리 주소에서 로드된 데이터를 반환합니다.

오류

LDREX 명령어를 지원하지 않는 타겟에 대해 컴파일하는 경우 컴파일러는 __ldrex 내장 함수를 인식하지 않습니다. 이 경우 컴파일러에서 경고 또는 오류를 생성합니다.

__ldrex 내장 함수는 더블워드 데이터에 대한 액세스를 지원하지 않습니다. 지원되지 않는 액세스 너비를 지정하면 컴파일러에서 오류를 생성합니다.

예제

int foo(void)
{
    int loc = 0xff;
    return __ldrex((volatile char *)loc);
}

--cpu=6k 명령 행 옵션을 사용하여 이 코드를 컴파일하면 다음이 생성됩니다.

||foo|| PROC
    MOV      r0,#0xff
    LDREXB   r0,[r0]
    BX       lr
    ENDP

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential