質問
私は次の状況
- 皆様にお伝えしたくて書き込みコードのカーネルを許可しないSSEの指示
- い浮動小数点演算
- 私の作成のためのx86_64ム
こちらはコードサンプルを示して問題:
int
main(int argc, char** argv)
{
double d = 0.0, dbase;
uint64_t base_value = 300;
d = (2200.0 - 1000.0)/(1000.0);
dbase = d * base_value;
printf("d = %f, dbase = %f\n", d, dbase);
base_value = dbase;
printf("base_value = %llu\n", (long long unsigned)base_value);
return 0;
}
こちらは当該回線からのmakefile:
CFLAGS += -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx -mno-3dnow \
-msoft-float -fno-asynchronous-unwind-tables -fno-omit-frame-pointer
かけるとビルドを取得しこのエラー:
SSE register return with SSE disabled
(誤差点のライン増殖d base_value)
うところだと思ってい修正。除去-mno-sse選択肢はないでしょうがない、コンパイラで発生非sseコードをいいます。
感謝 Nathan
解決
そのようなコンパイラは発光の呼び出図書館の日常の浮動小数点乗算(おそらを使用せずにSSE)が対応しようとしているそうだ、ABIの通話は戻り値に渡されたSSE.明らかにしています。
可能であれば全ての利用浮動小数点のすべてのカーネルがあってしかるべきだと思う特別なライブラリなソフトフロート業務に使用していない通常のもの(強く推奨)引数を渡し、返却コンベンションに出かけていく。しかし、私が知る限りではありません支援のための浮動小数点はBSDを含んでいます。したものは数年前です。
するとともに、BSDカーネル機器のメール一覧が表示されているかどうかを使用でき浮動小数点;いままでより速くより明確な答えよ。
所属していません StackOverflow