1
我正在使用Diab C编译器(v5.3.1.0)用于PowerPC,并且需要将MSR复制到函数的局部变量。 Diab不支持GCC风格的C表达式扩展,所以“mfmsr%0 \ n”:“= r”(msr)不起作用。简单地引用变量(mfmsr msr)也不起作用。尽管它说内联汇编对于使用静态变量很有帮助,但没有举例说明,但对于访问C变量,文档大多是无声的。使用内联汇编程序访问函数变量
任何意见或例子?
我正在使用Diab C编译器(v5.3.1.0)用于PowerPC,并且需要将MSR复制到函数的局部变量。 Diab不支持GCC风格的C表达式扩展,所以“mfmsr%0 \ n”:“= r”(msr)不起作用。简单地引用变量(mfmsr msr)也不起作用。尽管它说内联汇编对于使用静态变量很有帮助,但没有举例说明,但对于访问C变量,文档大多是无声的。使用内联汇编程序访问函数变量
任何意见或例子?
盯着文档最后把我引向了asm宏。我创建了一个看起来很像C函数的汇编宏,并调用它。
__asm INT32U getMSR()
{
! "r3" /* Scratch register.*/
mfmsr r3
}
,并在那里我想要得到的MSR:
{
...
msr = getMSR();
...
}