2014-01-10 59 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(或多线程),则可以消除代码中这些段的使用。链接到您的可执行文件的库函数可能会有它。