4.7.21.  __ldrt

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

구문

unsigned int __ldrt(const volatile void *ptr)

인수 설명:

ptr

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

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

명령어[1]로드된 데이터 크기C 캐스트
LDRSBT부호 있는 바이트(signed char *)
LDRBT부호 없는 바이트(char *)
LDRSHT부호 있는 하프워드(signed short int *)
LDRHT부호 없는 하프워드(short int *)
LDRT워드(int *)

[1] 또는 이와 동등함

반환 값

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

오류

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

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

예제

int foo(void)
{
    int loc = 0xff;
    return __ldrt((const volatile int *)loc);
}

기본 옵션을 사용하여 이 코드를 컴파일하면 다음이 생성됩니다.

||foo|| PROC
    MOV      r0,#0xff
    LDRBT    r1,[r0],#0
    MOV      r2,#0x100
    LDRBT    r0,[r2],#0
    ORR      r0,r1,r0,LSL #8
    BX       lr
    ENDP

추가 참고

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