关于gcc选项

关于gcc选项,gcc,x86,Gcc,X86,我可以通知gcc在编译C源文件时,不要使用fs&gs段寄存器吗 因为我的代码使用平面模式寻址,ds/es/ss/cs就足够了。%GS有各种各样的用途,我认为它通常用于堆栈保护和指针保护(保护金丝雀值)、线程本地存储,可能还有一些特殊指令 我不知道有什么开关可以完全避免它,但如果您禁用堆栈保护并避免使用TLS(或通常的多线程),您将能够在代码中消除这些段的使用。但链接到可执行文件的库函数可能有它。在哪个操作系统上?32位还是x86-64位?我认为这个问题更多地与gcc有关,而不是与操作系统有关。现

我可以通知gcc在编译C源文件时,不要使用fs&gs段寄存器吗


因为我的代码使用平面模式寻址,ds/es/ss/cs就足够了。

%GS有各种各样的用途,我认为它通常用于堆栈保护和指针保护(保护金丝雀值)、线程本地存储,可能还有一些特殊指令


我不知道有什么开关可以完全避免它,但如果您禁用堆栈保护并避免使用TLS(或通常的多线程),您将能够在代码中消除这些段的使用。但链接到可执行文件的库函数可能有它。

在哪个操作系统上?32位还是x86-64位?我认为这个问题更多地与gcc有关,而不是与操作系统有关。现在我正在使用32位i686-gcc进行测试。不,它与操作系统有关系,因为操作系统定义了;编译器为给定的目标处理器和给定的ABI编译代码。你为什么问?如果目标处理器和ABI定义了寄存器的使用方式,为什么要避免使用
fs
&
gs
寄存器?我正在编写一个微型操作系统。启动代码是汇编代码,在C环境准备就绪后,它跳转到C代码条目。问题是在汇编代码中我没有使用fs&gs。在C代码中,我无法控制这一点,因为这是gcc的工作。