我正在为PowerPC使用 Diab C编译器(v5.3.1.0),并且需要将MSR复制到函数的局部变量。 Diab不支持GCC样式C表达式扩展,因此“mfmsr%0 \ n”:“= r”(msr)不起作用。简单地引用变量(mfmsr msr)也不起作用。文档主要是在访问C变量时保持沉默,尽管它确实说内联汇编对于处理静态变量很有用,但没有给出一个例子。
有任何建议或例子吗?
答案 0 :(得分:3)
盯着文档最后引导我进入asm宏。我创建了一个看起来很像C函数的汇编程序宏,并调用它。
__asm INT32U getMSR ()
{
! "r3" /* Scratch register.*/
mfmsr r3
}
我想要获得MSR:
{
...
msr = getMSR ();
...
}