4.7.40.  __strt

此内在函数在编译器生成的指令流中插入 STR{size}T 格式的汇编语言指令。 它允许在 C 或 C++ 代码中使用 STRT 指令将数据存储到内存中。

语法


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

其中:

val

是要写入到内存中的值。

ptr

指向要写入到内存中的数据的地址。 要指定所写入的数据大小,请将参数类型转换为相应的整型。

Table 4.11. __strt 内在函数支持的访问宽度 

指令 加载的数据大小 C 类型转换
STRBT 无符号字节 ( char *)
STRHT 无符号半字 ( short int *)
STRT ( int *)

错误

为不支持 STRT 指令的目标进行编译时,编译器无法识别 __strt 内在函数。 在这种情况下,编译器将生成警告或错误。

__strt 内在函数不支持对有符号数据或双字数据的访问。 如果指定了不支持的访问宽度,编译器将生成错误。

示例


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

另请参阅

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