Macos Clang 5.1 fpmath

Macos Clang 5.1 fpmath,macos,clang,Macos,Clang,我正在尝试编译一个包含在Xcode 5.1中的带有Clang 5.1的程序。该程序是早期引导加载程序,因此其执行环境非常有限。我必须传递-mfpmath=387编译器标志才能生成正确的程序集。当我升级到Xcode 5.1时,我收到以下错误: 错误:此指令集不支持“387”单元 有人知道这个错误是什么意思吗?此标志的语法是否更改,如果更改,新语法是什么?(我也很想知道-mfpmath=387的作用。我一字不差地复制了它,但从未真正理解它对编译过程的影响。)事实证明,为了让Clang接受-mfpma

我正在尝试编译一个包含在Xcode 5.1中的带有Clang 5.1的程序。该程序是早期引导加载程序,因此其执行环境非常有限。我必须传递
-mfpmath=387
编译器标志才能生成正确的程序集。当我升级到Xcode 5.1时,我收到以下错误:

错误:此指令集不支持“387”单元


有人知道这个错误是什么意思吗?此标志的语法是否更改,如果更改,新语法是什么?(我也很想知道
-mfpmath=387
的作用。我一字不差地复制了它,但从未真正理解它对编译过程的影响。)

事实证明,为了让Clang接受
-mfpmath=387
,我还必须通过
-mno sse
。我通过grepping Clang的消息来源发现了这一点。不过,我还是想知道
-mfpmath=387
是做什么的。

猜测:

387表示英特尔x87浮点指令集(因此编译器标志的“fpmath”位)


很可能该标志告诉编译器生成针对387浮点体系结构的代码,而不是更高版本的代码。

如llvm/tools/clang/include/clang/Driver/CC1Options.td:def mfpmath:Separate,HelpText;因此,您可以选择387,sse…标志
-mfpmath=387
指示编译器仅使用80387兼容的浮点指令。这是必需的,因为引导加载程序可能在不支持MMX或SSE的计算机上运行。