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

このコンパイラ組み込み関数を使用して、コンパイラによって生成される命令ストリームに LDREX[size] 形式の命令を挿入します。C または C++ コードで LDREX 命令を使用して、メモリからデータをロードできます。LDREX[size]size には、バイト ストアの場合は B を、ハーフワードストアの場合は H を指定します。サイズが指定されていない場合は、ワードストアが実行されます。

Show/hide構文

unsigned int __ldrex(volatile void *ptr)

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

ptr

メモリからロードされるデータのアドレスを指します。ロードされるデータの型を指定するには、パラメータを適切なポインタ型にキャストします。

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

命令ロードされたデータのサイズC のキャスト
LDREXB符号なしバイト(unsigned char *)
LDREXB符号付きバイト(signed char *)
LDREXH符号なしハーフワード(unsigned short *)
LDREXH符号付きハーフワード(short *)
LDREXワード(int *)

Show/hide戻り値

__ldrex コンパイラ組み込み関数は、ptr が示すメモリアドレスからロードされたデータを返します。

Show/hideエラー

LDREX 命令をサポートしないターゲット向けにコンパイルされる場合、コンパイラは __ldrex コンパイラ組み込み関数を認識しません。この場合、コンパイラによって警告またはエラーが生成されます。

__ldrex コンパイラ組み込み関数は、ダブルワードデータへのアクセスをサポートしません。サポートされないアクセス幅を指定すると、コンパイラによってエラーが生成されます。

Show/hide

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

コマンドラインオプション --cpu=6k を使用してこのコードをコンパイルすると、以下のコードが生成されます。

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

Show/hide関連項目

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