4.7.41.  __swp

이 내장 함수는 SWP{size} 명령어를 컴파일러가 생성한 명령어 스트림에 삽입합니다. 이를 통해 C 또는 C++ 코드 내에서 메모리 위치 간 데이터를 스왑할 수 있습니다.

Note

ARMv6 이상에서는 SWPSWPB의 사용이 제공되지 않습니다.

구문

unsigned int __swp(unsigned int val, volatile void *ptr)

인수 설명:

val

메모리에 작성할 데이터 값입니다.

ptr

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

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

명령어로드된 데이터 크기C 캐스트
SWPB부호 없는 바이트(char *)
SWP워드(int *)

반환 값

__swp 내장 함수는 ptr이 가리키는 메모리 주소에 있는 데이터 값을 이 값이 val로 덮어쓰여지기 전에 미리 반환합니다.

예제

int foo(void)
{
    int loc=0xff;
    return(__swp(0x20, (volatile int *)loc));
}

이 코드를 컴파일하면 다음이 생성됩니다.

||foo|| PROC
    MOV      r1, #0xff
    MOV      r0, #0x20
    SWP      r0, r0, [r1]
    BX       lr
    ENDP

추가 참고

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