2014-01-10 39 views
0

我可否通知gcc當編譯C源文件時,請勿使用fs & gs段寄存器。關於gcc選項

因爲我的代碼使用平面模式尋址,ds/es/ss/cs就足夠了。

+0

在哪個操作系統上? 32位或x86-64? –

+0

我認爲這個問題與gcc有更多的關係,而不是操作系統。 現在我正在使用32位i686-gcc進行測試。 –

+0

不,它與操作系統有關係,因爲操作系統定義了[ABI](http://en.wikipedia.org/wiki/Application_binary_interface);編譯器爲給定的目標處理器和給定的ABI編譯代碼。 –

回答

1

%GS有各種用途,我認爲除其他外,它經常用於stack_guard和pointer_guard(保護金絲雀值),線程本地存儲以及可能的一些特殊說明。

我不知道一個開關可以完全避免它,但是如果禁用堆棧保護並避免使用TLS(或多線程),則可以消除代碼中這些段的使用。鏈接到您的可執行文件的庫函數可能會有它。