小野です。
結論から言えば、i386システム用のgccにおけるコン
パイルオプションなのではないでしょうか。
% gcc -m96bit-long-double -S s.c -o s1.a
% gcc -m128bit-long-double -S s.c -o s2.a
これを簡易に試してみました。いづれもプラットフォームはIntel
Core2DuoのMacintoshです。
1) MacOSXネイティヴな環境 (OSX 10.5.2)
この環境では、二つのアセンブラソースは僅かに違い、変数lcの定
義において96bitオプションでは
LC1:
.long 560513589
.long -921707870
.long 16384
.text
128bitオプションでは
LC1:
.long 560513589
.long -921707870
.long 16384
.long 0
.text
となります。gccのヴァージョン情報は
% gcc --version
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465)
Copyright (C) 2005 Free Software Foundation, Inc.
ですので、いわゆるi386システム用であることがわかります。
2) FreeBSD/amd64 on VMWare Fusion
こちらの環境では、両アセンブラソースは完全に一致します。変数lc
の定義部分は
.LCFI1:
movabsq $4614256656552045848, %rax
movq %rax, -8(%rbp)
movabsq $-2958705157555305931, %rax
movl $16384, %edx
movq %rax, -32(%rbp)
movl %edx, -24(%rbp)
となっています。gccのヴァージョン情報は
% gcc -v
Using built-in specs.
Confugured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305
です。すなわち、amd64システム用であることがわかります。
以上の結果から、冒頭に述べたようにこれはi386システム用の
gccにおけるコンパイルオプションであると思われます。いかがで
しょうか。
--
;; So I must go before you see me fall
;; 小野すず@平城京右京五条三坊