4.7.49. 已命名的寄存器变量

通过使用编译器,您可以使用已命名的寄存器变量访问基于 ARM 体系结构的处理器的寄存器。 支持的已命名寄存器变量为:

语法

registertypevar-name __asm(reg);

其中:

type

是已命名寄存器变量的类型。

在已命名的寄存器变量声明中,可以使用与已命名的寄存器大小相同的任何类型。 该类型可以为结构,但要注意位域布局区分端标记。

var-name

是已命名寄存器变量的名称。

reg

是一个字符串,表示基于 ARM 体系结构的处理器上的寄存器名称。

Table 4.16 中显示了基于 ARM 体系结构的处理器上可用于已命名寄存器变量的寄存器。

Table 4.16. 基于 ARM 体系结构的处理器上提供的已命名寄存器 

寄存器 用于 __asm 的字符串
CPSR

"cpsr""apsr"

SPSR

"spsr"

r0r12 "r0""r12"
r13sp "r13""sp"
r14lr "r14""lr"
r15pc "r15""pc"

在包含 VFP 的目标上,Table 4.17 中的寄存器还可用于已命名的寄存器变量。

Table 4.17. 包含 VFP 的目标上提供的已命名寄存器 

寄存器 用于 __asm 的字符串
FPSID "fpsid"
FPSCR "fpscr"
FPEXC "fpexc"

示例


void foo(void)

{

    register int foo __asm("r0");

}

在此示例中,将 foo 声明为寄存器 r0 的已命名寄存器变量。

另请参阅

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