2013-07-02 52 views
1

我正在使用Diab C编译器(v5.3.1.0)用于PowerPC,并且需要将MSR复制到函数的局部变量。 Diab不支持GCC风格的C表达式扩展,所以“mfmsr%0 \ n”:“= r”(msr)不起作用。简单地引用变量(mfmsr msr)也不起作用。尽管它说内联汇编对于使用静态变量很有帮助,但没有举例说明,但对于访问C变量,文档大多是无声的。使用内联汇编程序访问函数变量

任何意见或例子?

回答

3

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

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

    mfmsr r3 
} 

,并在那里我想要得到的MSR:

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