10.147 __strt コンパイラ組み込み関数

__strt コンパイラ組み込み関数を使用すると、C または C++ コードで STR{size}T 命令を使用してデータをメモリにストアできます。

構文

void __strt(unsigned int val , volatile void * ptr )
各項目には以下の意味があります。
val
メモリに書き込む値を指定します。
ptr
メモリに書き込まれるデータのアドレスを指します。書き込まれるデータのサイズを指定するには、パラメータを適切な整数型にキャストします。

表 10-13 __strt コンパイラ組み込み関数がサポートするアクセス幅

命令 ストアされたデータのサイズ ポインタ型
STRBT バイト char *
STRHT ハーフワード short *
STRT ワード int *

エラー

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

void foo(void)
{
    int loc=0xff;
    __strt(0x20, (volatile char *)loc);
}
このコードをコンパイルすると、以下が生成されます。
||foo|| PROC
    MOV      r0,#0xff
    MOV      r1,#0x20
    STRBT    r1,[r0],#0
    BX       lr
    ENDP
関連する参考文書
8.180 --thumb
関連情報
STR(非特権モード)
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.