2017-03-03 100 views
1

我正在嘗試爲arm組件創建宏(使用GNU工具)。比較gnu asm(gas)中的宏參數

.macro FUNCTION  name, attrs 
    .ifc \attrs\(),"global" 
     .global   \name 
    .endif 

    // other stuff 
.endm 

所以宏FUNCTION myFunc, global可以.global屬性進行評估。 但是,marcro不處理此屬性比較。簡單地說.if永遠不會被評估?

有沒有辦法比較這種類似字符串的宏參數?

+0

yeap,我說的是正常的asm,不是'in-line'的。順便說一句**全球**沒有任何類型的報價工程。 '.ifc \ attrs,global ... .endif'。無聲的噪音,如果你把它作爲答案,我會將其標記爲正確的答案。謝謝。 – user3124812

回答

0

Gas使用single quotes來表示字符串而不是雙引號。

.IFC字符串1,字符串

,彙編代碼段如果兩個字符串是相同的。字符串可以是,可選地用單引號引用。如果它們未被引用,則第一個字符串將停在第一個逗號處,而第二個字符串停在該行的末尾。 包含空格的字符串應引用。字符串比較區分大小寫。

如果沒有空格或其他解析問題,與全球,你可以用原來的名稱沒有任何引用。所以一個可以接受的解決方案是,

.macro FUNCTION  name, attrs 
    .ifc \attrs\(),global 
     .global   \name 
    .endif 

    // other stuff 
.endm