2013-07-02 93 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(); 
... 
}