__swp コンパイラ組み込み関数

このコンパイラ組み込み関数を使用して、コンパイラによって生成される命令ストリームに SWP{size} 命令を挿入します。コンパイラ組み込み関数を使用すると、C または C++ コード内からのデータをメモリ位置間でスワップできます。

Note

ARMv6 以降では、SWP および SWPB の使用は推奨しません。

Show/hide構文

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

各項目には以下の意味があります。

val

メモリに書き込むデータ値を指定します。

ptr

メモリに書き込まれるデータのアドレスを指します。書き込まれるデータのサイズを指定するには、パラメータを適切な整数型にキャストします

Table 21. __swp コンパイラ組み込み関数によってサポートされるアクセス幅

命令ロードされたデータのサイズC のキャスト
SWPB符号なしバイト(char *)
SWPワード(int *)

Show/hide戻り値

__swp コンパイラ組み込み関数は、ptr が示すメモリアドレスに格納されているデータ値を返します。それまで格納されていた値は、val で上書きされます。

Show/hide

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

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711