使用内联汇编程序访问函数变量

时间:2013-07-02 19:24:04

标签: assembly powerpc

我正在为PowerPC使用 Diab C编译器(v5.3.1.0),并且需要将MSR复制到函数的局部变量。 Diab不支持GCC样式C表达式扩展,因此“mfmsr%0 \ n”:“= r”(msr)不起作用。简单地引用变量(mfmsr msr)也不起作用。文档主要是在访问C变量时保持沉默,尽管它确实说内联汇编对于处理静态变量很有用,但没有给出一个例子。

有任何建议或例子吗?

1 个答案:

答案 0 :(得分:3)

盯着文档最后引导我进入asm宏。我创建了一个看起来很像C函数的汇编程序宏,并调用它。

__asm INT32U getMSR ()
{
   ! "r3"  /* Scratch register.*/

   mfmsr    r3
}

我想要获得MSR:

{
...
msr = getMSR ();
...
}