2011-03-20 37 views
3

我陷入了一個問題。我一直在使用gcc編譯/彙編我的C代碼一段時間,並習慣使用英特爾彙編語法。生成程序集文件時,我使用了-masm=intel標誌。將英特爾icc與gcc集成

最近,由於公司遷移,他們獲得了英特爾的icc,聲稱它更好。所以現在我需要使用icc,但奇怪的是它有默認的彙編語法,如AT & T.我試圖改變它,但它沒有工作,所以我聯繫了英特爾的支持,他們也不知道和每個人給了我一個矛盾的答案。

有沒有辦法整合gcc和icc,這樣我就可以用icc編譯「優勢」,同時用gcc編譯成intel的語法?

我使用的是Ubuntu並獲得了icc版本12.x

+1

如何困難將移出的內聯彙編轉換成單獨的彙編源文件並使用合適的彙編程序構建這些文件? – 2011-03-20 10:20:28

+0

此外,你意識到沒有什麼能阻止你將gcc編譯的源文件與其他icc編譯的源文件鏈接起來嗎? – 2011-03-20 12:07:10

+0

@保羅:我不知道你是否理解這個問題。我不想組裝......我只想讀取組件文件,而不使用內聯彙編!我想用'-S'來查看彙編代碼 – 2011-03-20 23:36:19

回答

3

此標誌?

-use_msasm  Support Microsoft style assembly language insertion 
        using MASM style syntax and, if requested, output assem- 
        bly in MASM format 

https://web.archive.org/web/20120728043315/http://amath.colorado.edu/computing/software/man/icc.html

+0

鏈接已經死亡,'-use_msasm'標誌不起作用,或者 – 2015-03-06 18:08:51

+0

@LưuVĩnhPhúc鏈接復活,它只是icc的手冊頁。您可能必須清除您的版本的發行說明以遵循這些更改。 – 2015-03-06 18:55:39

0

似乎-masm=intel作品ICC,至少在Matt Godbolt's GCC Explorer最新版本(13.0.1)。我試圖加載「求和數組」的例子,它產生以下組件

L__routine_start__Z12testFunctionPii_0: 
testFunction(int*, int): 
     xor  eax, eax          #2.11 
     test  esi, esi          #3.23 
     jle  ..B1.18  # Prob 50%      #3.23 
     movsxd rdx, esi          #3.3 
     cmp  rdx, 4          #3.3 
     jl  ..B1.19  # Prob 10%      #3.3 
... 

而在史蒂夫 - O的答案指定-use_msasm像不起作用