2

私は、x86-64macおよびlinuxで必要なlongdoubleの配置を正確に調べようとしています。さまざまな要件を示唆するさまざまなものを見つけましたが、信頼できる情報源を見つけることができません。

Mac OS Xで見つけたところ、gccは、16バイトのアラインメントを必要とするmovapsを使用してlongdoubleをコピーするコードを生成することがあります。しかし、clangはそうではなく、gccは非常に古いので、おそらくこれは修正されない古いバグですか?

4

1 に答える 1

4

Linux x86_64 ABIは、longdoubleを16バイトで整列させることを指定しています。これは、longdoubleがわずか4バイトで整列されることを指定する32ビットx86Linux ABIとは異なります(現在のCPUでは最適ではありませんが、過去のアーティファクトです)。

Mac OSX x86 ABIについてはよくわかりませんが、そのような歴史的な荷物を保持しているとしたら、私は驚きます。したがって、私の推測では、16バイトのアラインメントになります。

于 2012-10-17T16:46:41.947 に答える