2011-03-07 53 views
3

我想知道是否有辦法在gcc/g ++中禁用預測。當我得到我的代碼的對象轉儲時,我不希望有任何CMOV,CCMP等指令。禁用gcc/g ++中的預測

我已經通過gcc手冊頁沒有任何成功。到目前爲止,唯一的出路似乎是侵入gcc本身。在RHEL x86_64機器上使用gcc 4.3。有任何想法嗎?

在此先感謝。

+2

爲什麼要這樣做? – Gabe 2011-03-07 22:52:22

回答

1

您可以嘗試鎖定之前沒有這些指令的x86指令集?

http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Target-Options.html

gcc -b i386 main.c 

(我沒試過)

+0

感謝James的指導。我讀過你發佈的文章。 gcc說「無法識別的選項」-b'「。不完全確定爲什麼。試過-march = i386。得到「錯誤:您選擇的CPU不支持x86-64指令集」。同樣的-mtune = i386。儘管如此,我仍然在尋找解決方案。 – antitalented 2011-03-08 15:59:56

2

我遇到了這個問題之前,在我的情況下,解決辦法是禁用,如果轉換。您可以使用編輯旗標:

-fno-if-conversion -fno-if-conversion2 
+0

根據文檔,該建議似乎是正確的,但即使使用這些標誌,我仍然無法避免使用CMOV。 – alecov 2017-01-15 15:02:17