のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,642,114人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレGCCについて part8

gcc覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

1 = :

史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
http://gcc.gnu.org/

Binutils - Collection of binary utilities ←これも必要だぞ。
http://www.gnu.org/directory/GNU/binutils.html

GNU Binutils
http://sources.redhat.com/binutils/

GCC online documentation
http://gcc.gnu.org/onlinedocs/

Installing GCC
http://gcc.gnu.org/install/

GCC Timeline
http://gcc.gnu.org/releases.html#timeline

Calendar
http://gcc.gnu.org/develop.html#timeline

前スレ
GCCについて part7
http://pc11.2ch.net/test/read.cgi/tech/1145357824/l50

3 = :

>>1

4 = :

x86です。

double d = 0.3; int i;
i = d * 1000;

とすると i=299になります。

d = d * 1000; i = d;

とするとi=300になります。 Macのgccで試したら300になるので生成したコードを調べると
SSE2インストラクションを使ってました。試しに-msse2でコンパイルすると両方とも300に
なりました。 gccは3.2.2, 3.3.5, 4.1.1と試しましたが全部同じです。

manに書かれている以下の文が関係しているのでしょうか?

... -msse2 ...

The resulting code should be considerably faster in the major-
ity of cases and avoid the numerical instability problems of
387 code,

この問題をどこか詳しく説明している文書はありますでしょうか? 

5 = :

x86は浮動小数点数レジスタが80ビットあり、演算はこの大きさで行われる
メモリに書き戻されるタイミングで64ビットに切り捨てられるのだが、
コンパイラの最適化の具合によって
メモリに書き戻されるタイミングが変わり、計算結果が変わることがある

6 = :

floatだと300になるんだよなぁ。
最初の方で
double d = 2.99999999999999988897769753748434595763683319092e-1;
float f = 3.00000011920928955078125e-1;
に変換されていた。
-O0だとハードウェアが使うそのままの形で渡すから、マシン依存ってことかな?
-O2だとmsse2じゃなくても300になった。
http://gcc.gnu.org/bugs.html#known だね。

gccはrtlとか出てきたらよく分からんなぁ。GIMPLEはわかりやすいんだが。。。

7 = :

GCC用のソースをVCでコンパイルできるようにしてたときにちょっと引っかかったんだけど、
構造体の初期化でメンバ名を指定できるのと、その他の初期値を指定できるなんて
初めて見たよ。
たしかに便利っちゃぁ便利だけど...

8 = :

全然普及しないC99

9 = :

>>5 >>6
大変参考になりました。 ありがとうございます!

10 = :

>>7
VCってC99サポートしてないの?

11 = :

してないよ

12 = :

低反発枕が凄い硬くて反発力が激しいのですが何とかなりませんか。

13 = :

知るか

14 = :

>>7
コンパウンドリテラル

15 = :

>>7
designated Initializerか
>>8にもあるけどC99で取り入れられてるな

17 = :

>>6

いや、0.3=3/10は2進数では無限小数になって丸め誤差が出ているだけでは?

0.3 = 0.10011001100110011001100…

19 = :

gccのプリプロセッサが、ヘッダファイルをどのディレクトリから探しているのか、探している様子を
画面表示するオプションは無いでしょうか?

gccの-iprefixオプションを使うと、途端にいくつかの標準ヘッダが見付からなくなる現象で悩んでます。

22 = :

コード生成以後もいろいろ大変なんだろうけど、
C++やJavaみたいに、言語規格自体が大きくて、
しょっちゅう変更される言語も含まれるから、
リリースがどんどん重くなりそうだね。

libstdc++なんか、言語処理系のバージョンとの関係が切り放せないし。

23 = :

C++は変更が2009年までに本当に終わるのかどうかが心配されているわけだが。。。

25 = :

デバッグ情報をどれだけ入れるかの違い。

28 = :

manにもinfoにも載ってないよ。

29 = :

構造体のパックってどうやるんですか

30 = :

パックしたい構造体に#pragma pack(1)を使う

33 = :

今時、構造体のパックして何するの?

34 = :

お肌にいい

35 = :

>>33
昔は必要だったの?

36 = :

>>33
余計なalignmentが入るのを防ぐ。

最初にデータ構造ありき、な時は必要でしょ。
ファイルフォーマットとかパケットの構造体作る時とか。

37 = :

そういうわけだから、今でも要るところには要る。

38 = :

アライメント違反でSIGBUSするCPUの場合はどうするの?

39 = :

>>38
ずっと前に、コンパイラがバイト単位での読み書きに翻訳してくれたりした覚えが
あるんだけど、今考えるとメンバ単体をポインタ経由でアクセスしたら死にそう。

40 = :

OSのカーネルがやってくれる場合もあるな。
でも、OSもコンパイラも面倒見てくれない環境もあるべ。

自分でバイト単位に書き込むのか?

41 = :

>>40
だれも面倒見てくれないんなら自分でやればいいだろ。

42 = :

>>40
trapで落ちてからか~、大昔からあるテクニックだけど今時のマシンでやったらstallしまくりでいやげだなぁ。
softfloatとかも便利だけど鈍いよね。

43 = :

>>42
だがそれがいい

44 = :

>>40
エミュするのめんどいんで、自力でなんとかしてくれ。

>>42
正確に数えたことないけど数十倍の時間がかかるはず。
根性でもう少し高速化できるかも知れんが、あくまで救済措置だからのう…
そんな所にエネルギー使いたくない。


47 = :

できないみたい


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について