10.125 __ldrt コンパイラ組み込み関数

__ldrt 組み込み関数を使用すると、C または C++ コードで LDR{size}T 命令を使用してメモリからデータをロードすることができます。

構文

unsigned int __ldrt(const volatile void *ptr)
各項目には以下の意味があります。
ptr
メモリからロードされるデータのアドレスを指します。ロードされるデータのサイズを指定するには、パラメータを適切な整数型にキャストします。

表 10-10 __ldrt コンパイラ組み込み関数がサポートしているアクセス幅

命令a ロードされたデータのサイズ ポインタ型
LDRSBT バイト signed char *
LDRBT バイト unsigned char *
LDRSHT ハーフワード signed short *
LDRHT ハーフワード unsigned short *
LDRT ワード int *

戻り値

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

エラー

__ldrt 命令をサポートしないターゲット向けにコンパイルされる場合、コンパイラは __strt コンパイラ組み込み関数を認識しません。使用されたソース言語に応じて、コンパイラは、警告またはエラーを生成します。
  • C コード:警告:#223-D:関数 "__ldrt" が暗黙に宣言されています
  • C++ コード:エラー:#20:識別子 "__ldrt" が定義されていません
__ldrt コンパイラ組み込み関数は、ダブルワードデータへのアクセスをサポートしません。サポートされないアクセス幅を指定すると、コンパイラによってエラーが生成されます。

int foo(void)
{
    int loc = 0xff;
    return __ldrt((const volatile int *)loc);
}
デフォルトオプションを使用してこのコードをコンパイルすると、以下のコードが生成されます。
||foo|| PROC
    MOV      r1,#0xff
    LDRT     r0,[r1],#0
    BX       lr
    ENDP
関連する参考文書
8.180 --thumb
関連情報
LDR(非特権モード)
a ターゲット命令セットにリストに示された命令がない場合、コンパイラは、同等の動作を含む命令のシーケンスを代わりに生成します。
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.