小野です。

 結論から言えば、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
;; 小野すず@平城京右京五条三坊


メールによる返信