トップページ⇒tech
1001コメント270KB

GCCについて part9

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/06/27(土) 08:34:50
史上最強かもしれないツール、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について part8
http://pc12.2ch.net/test/read.cgi/tech/1192201659/l50
0232デフォルトの名無しさん2010/02/05(金) 10:16:35
arm社に文句言え
0233デフォルトの名無しさん2010/02/09(火) 10:45:29
ARM社に言ってもしょうがないだろ
IARとか、RVDSはもっと速いのかな?
0234デフォルトの名無しさん2010/02/11(木) 15:55:30
なぜgccにはstricmpが無いんだ?アホなのか?
0235デフォルトの名無しさん2010/02/11(木) 15:57:47
コンパイラの問題じゃないだろ
0236デフォルトの名無しさん2010/02/11(木) 19:55:21
strcasecmpがあるから
0237デフォルトの名無しさん2010/02/11(木) 20:15:07
strcmpiじゃなかったっけ
まあ今となっては良い思い出
0238デフォルトの名無しさん2010/02/11(木) 21:40:15
>>234,236,237
コンパイラとライブラリは切れば切れる関係。

例えば同じ Windows 上の gcc でも、Cygwin と MinGW で使える関数が
違うでしょ。

0239デフォルトの名無しさん2010/02/11(木) 23:17:07
ところでnewlibって何なの?
こういうネーミングはやめてほしいんだが
このセンスはさすがに引く
古くなったらどうすんだよ
0240デフォルトの名無しさん2010/02/12(金) 11:09:27
最近は年末にリリースされてるから
0241デフォルトの名無しさん2010/02/12(金) 17:00:11
それならclibだと。
0242デフォルトの名無しさん2010/02/16(火) 17:56:29
http://clubt.jp/product/92651_3621255.html
0243デフォルトの名無しさん2010/02/17(水) 02:55:25
>>234
STRing Ignore Compareってw
センスの悪い命名…
0244デフォルトの名無しさん2010/02/17(水) 14:11:16
i は Ignore なのか?
case Insensitive の i だと思った
悪い命名なのは疑いようがないけど
0245デフォルトの名無しさん2010/02/17(水) 23:46:25
sprintfおせーぞ
gccだけおせーんじゃ
なんとかしろ
0246デフォルトの名無しさん2010/02/17(水) 23:53:27
文句言う前に、自分で早いsprintfを書けばいいのに
0247デフォルトの名無しさん2010/02/18(木) 00:29:39
std::sprintfとかsprintfと紛らわしい
関数作るんじゃねーよ
0248デフォルトの名無しさん2010/02/18(木) 03:13:31
>>231=>>234=>>245=>>247だとすると、
何のプラットフォームでどんなものを作ってるのか、大体予想つくな
0249デフォルトの名無しさん2010/02/18(木) 21:20:29
>>248
こういう発言ってついったの方が楽しいのにね
0250デフォルトの名無しさん2010/02/19(金) 07:09:00
笑われてるだけでしょ
0251デフォルトの名無しさん2010/02/19(金) 14:34:01
>>250
笑うなよ
0252デフォルトの名無しさん2010/02/19(金) 18:55:54
gccスレでぐっちてる時点で...
0253デフォルトの名無しさん2010/02/20(土) 16:26:44
>233
ARM固有の最適化部分のメインコミッターのほとんどはARM社からお金もらっている人々だよ
最適化で、いつまでたってもARM純正に勝てないのはARM社がコントロールしてるから

ARMのプラットホーム使わないといけない人のほとんどは、gccの中身なんて弄ってる余裕が無いよ
ARMを使ったPCが普及すれば、変わると思うけど

0254デフォルトの名無しさん2010/02/20(土) 22:12:55
昔、玄箱スレでgccはARMよりPPCのが効率よいコード吐くって話があったけど、
状況変わらず?
ARMの命令セットがやや特殊なせいなのかな
0255デフォルトの名無しさん2010/02/20(土) 22:21:04
>>254
自社のコンパイラより効率的なバイナリを
生成するコンパイラは、排除するって明言しているから
どうにもならないよ。

0256デフォルトの名無しさん2010/02/24(水) 07:57:43
gccの文字列処理おせーんだよ

なんでgcc3.4でSSE4.2に対応してねーんだよバカ
0257デフォルトの名無しさん2010/02/24(水) 08:01:10
おそい書き方したお前が悪い
0258デフォルトの名無しさん2010/02/24(水) 12:45:50
>>256
gcc4使えばいいじゃん。
0259デフォルトの名無しさん2010/02/25(木) 02:57:51
pc1:
2.95.3
3.3.6

pc2:
4.3.4
4.4.3

二つずつ入れてて計4つ

>>256
使い分けりゃいいじゃん。
0260デフォルトの名無しさん2010/02/27(土) 14:06:45
gccの文字列処理ってどこを指すの?
0261デフォルトの名無しさん2010/02/27(土) 16:41:37
さあ、ビルトイン関数のことかも
0262デフォルトの名無しさん2010/03/03(水) 10:12:29
>>260
printfの警告とか。
0263デフォルトの名無しさん2010/03/03(水) 13:27:36
ストリーミング命令使ったstr系関数の変態最適化ってやってるんだっけ
0264デフォルトの名無しさん2010/03/10(水) 00:17:34
gccは
char buf[256] = {0};って記述しても
0に初期化されることはない

腐ってやがる
0265デフォルトの名無しさん2010/03/10(水) 00:31:09
>264
バージョンはいくつですか
0266デフォルトの名無しさん2010/03/10(水) 03:05:21
>>264 んなこたーない
0267デフォルトの名無しさん2010/03/10(水) 04:30:31
起動時にbssをクリアしてないとか
0268デフォルトの名無しさん2010/03/10(水) 18:19:47
>>264
いつの時代のgcc?
0269デフォルトの名無しさん2010/03/10(水) 18:20:46
char buf[256] = {0};
で、後ろの255バイトも自動的にゼロクリアされるのは
Cの仕様?それともgccのやさしさ?
0270デフォルトの名無しさん2010/03/10(水) 19:20:51
>>269
Cの仕様
0271デフォルトの名無しさん2010/03/10(水) 22:41:05
>>269
{1}のケースもどうなるか理解しといた方がいいよ。

> the remainder of the aggregate shall be initialized implicitly
> the same as objects that have static storage duration.
0272デフォルトの名無しさん2010/03/14(日) 05:07:16
binutils 2.20.1
0273デフォルトの名無しさん2010/03/14(日) 07:47:11
binutils-2.16.1
0274デフォルトの名無しさん2010/03/14(日) 13:40:41
mallocだと0フィルされる保証はない?
0275デフォルトの名無しさん2010/03/14(日) 13:53:06
普通、確保されるだけじゃないの?
callocなら0フィルされると思うけど
0276デフォルトの名無しさん2010/03/14(日) 13:53:09
今時gcc使ってるやつは莫迦
0277デフォルトの名無しさん2010/03/14(日) 23:21:50
>276
は、何を使ってるのよ
0278デフォルトの名無しさん2010/03/15(月) 00:00:29
http://sourceforge.jp/projects/freshmeat_ack/
かな?
0279デフォルトの名無しさん2010/03/15(月) 00:17:30
codesourceryのg++ってdo_global_ctorsとかstartup関連がないみたいなんですけど、
自分で実装するとき、.init_arrのグローバルコンストラクタを呼び出す以外にやることありますかね?

あと、libc(newlib)の初期化とかもやらないといけなさそうですが、方法がわからない。

codesourceryでstl使ったプログラムかけた人いたら教えてください。
0280デフォルトの名無しさん2010/03/15(月) 10:56:04
>>274
無い。
セキュリティホールになるってんでゼロ梅してた時期もあったけど。
0281デフォルトの名無しさん2010/03/15(月) 11:08:15
セキュリティホールってより、暴走の原因とか
0282デフォルトの名無しさん2010/03/15(月) 11:37:41
>>281
それはない。
それはただのバグだ。
0283デフォルトの名無しさん2010/03/16(火) 18:31:56
不定値前提で安定したプログラム作れないほうがよっぽど
0284デフォルトの名無しさん2010/03/16(火) 18:48:52
0クリアするくらいならdeadbeefで埋めたほうがまし
0285デフォルトの名無しさん2010/03/16(火) 19:00:57
新規割り当てメモリを初期化しない場合のセキュリティーホールというのは
上位権限のプロセスが開放したメモリにある情報を読めるかもしれないとい問題
0286デフォルトの名無しさん2010/03/16(火) 19:01:25
フフフフフフフフフフフフフフフ
0287デフォルトの名無しさん2010/03/16(火) 19:06:26
oppai
0288デフォルトの名無しさん2010/03/16(火) 19:09:27
>>285
そりゃライブラリ側の仕事でなくOSの仕事だろう
0289デフォルトの名無しさん2010/03/16(火) 19:14:24
malloc(3)の話だから、OSの仕事も含むのは普通。
0290デフォルトの名無しさん2010/03/17(水) 00:23:13
char buf[256] = {0};
ってやるとgccだとmemset関数を呼び出す
糞実装になってるw

アホだろw
0291デフォルトの名無しさん2010/03/17(水) 00:24:54
そこでmemsetを呼び出さない処理系を教えてくれ
0292デフォルトの名無しさん2010/03/17(水) 00:29:33
gcc糞だからなぁ
0293デフォルトの名無しさん2010/03/17(水) 01:22:05
>>291
gcc-4.3は呼び出さない
0294デフォルトの名無しさん2010/03/17(水) 01:33:32
-minline-all-stringopsって使っていいの?
0295デフォルトの名無しさん2010/03/17(水) 01:51:04
>>290
どうしてほしいの?rep stosdにでもしてほしいとか?
0296デフォルトの名無しさん2010/03/17(水) 03:38:41
>>289
含まねーよ。物事を区別して考えられないバカっているんだねえ。
0297デフォルトの名無しさん2010/03/17(水) 07:31:27
>>284
いい悪いってか、用途によるでしょ。
バイナリはでかくなるよ
0298デフォルトの名無しさん2010/03/17(水) 07:33:10
ちょっとタンマ
>>297の答えに自信ない
0299デフォルトの名無しさん2010/03/17(水) 14:11:14
1kbも増えんだろ
0300デフォルトの名無しさん2010/03/17(水) 15:57:20
>>296
あるライブラリ関数について、
C標準では定義されてないことを、
OSの方で定義していることは良くあること。
たとえばスレッドセーフかどうか。
0301デフォルトの名無しさん2010/03/18(木) 09:48:55
それはそのライブラリ関数を使う側にとっての関心事項。
>>285のは他プロセスないしカーネルにとっての関心事項。
別の話だね。
0302デフォルトの名無しさん2010/03/18(木) 10:28:13
他プロセスがmallocおよびその下請システムコールを呼ぶ場合の話でしょ?
0303デフォルトの名無しさん2010/03/19(金) 07:04:48
>>300
OSじゃなく処理系だろ
0304デフォルトの名無しさん2010/03/20(土) 09:55:19
CPU Frequencyをリアルタイムで取得するgoodな方法を教えてくれ
0305デフォルトの名無しさん2010/03/20(土) 10:10:30
RDTSC
0306デフォルトの名無しさん2010/03/23(火) 22:46:45
プリプロセッサの処理中にメッセージを表示したいのですが、
gccでも可能でしょうか?
Visual C++ では #pragma message("msg") などと書けばできたのですが。
0307デフォルトの名無しさん2010/03/24(水) 00:12:02
>>306
http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
によると、
#pragma message "Compiling " __FILE__ "..."
とか出来るっぽいぜ
0308デフォルトの名無しさん2010/03/24(水) 17:22:22
>>305
今はだめだろ。CPUいっぱいあるから。
0309デフォルトの名無しさん2010/03/24(水) 19:57:17
ついでにいうとCPU, OSの組み合わせによってはRDTSCがエミュになってしまい
数百クロックを要する。
だがそのような環境では逆に全コアでタイマカウンタが一貫してたりする。
03103062010/03/25(木) 21:44:47
>>307
ありがとうございます。しかし試してみたところダメでした。
-Wunknown-pragmasでコンパイルしたら「無視しました」みたいなメッセージが出ました。
gccのバージョンによるんですかね。4.3.2でした。
0311デフォルトの名無しさん2010/03/27(土) 00:23:57
>>307
#warningで出来るかなと思ったら引数のマクロ展開はしないとか
ふざけた事を抜かしているのであまり使えないな。 この程度は
出来るけど。

#warning Message

$ gcc -c source.c
source.c:1:2: warning: #warning Message

waring:#warning が冗長で醜いなあw

0312デフォルトの名無しさん2010/03/27(土) 09:37:53
俺もそれは浮かんだが、-Werrorを入れてる環境だと止まるので完全ではないわな
0313デフォルトの名無しさん2010/04/01(木) 23:33:33
Xeon 5500って、最適化オプションの名前って何ですか?

nocona?
core2?
0314デフォルトの名無しさん2010/04/02(金) 07:35:10
>>313
たしか〜

nehalem-exかNorthwood
0315デフォルトの名無しさん2010/04/02(金) 10:42:05
最適化してもあまり変わらないんだけどな
SSE2を使うだけで十分だと思う
0316デフォルトの名無しさん2010/04/02(金) 21:31:49
nativeでいいよ
0317デフォルトの名無しさん2010/04/07(水) 10:20:40
4.5.0-RC-20100406
0318デフォルトの名無しさん2010/04/14(水) 15:49:00
GCC4.4.1は-msse・最大最適化でコンパイルすると、float演算はSSE命令により
自動ベクトル化されるが、整数演算はベクトル化されない。整数移動はベクトル化
されるが、float用SSE命令が使われていた。GCCはMMXや3DNOWコードを吐かないの?
0319デフォルトの名無しさん2010/04/14(水) 21:08:15
GCC 4.5.0 release
0320デフォルトの名無しさん2010/04/14(水) 21:43:24
MMXは基本的にshort以下の整数に使うもんだし
飽和演算とか利用してこそだし
あまり自動最適化には向かないんじゃない
0321デフォルトの名無しさん2010/04/15(木) 01:44:02
MMXは切替えなくちゃ使えないから使わないみたいなのを読んだような気がする
0322デフォルトの名無しさん2010/04/15(木) 07:15:21
SSEの整数命令使えばいいんじゃない
0323デフォルトの名無しさん2010/04/15(木) 12:53:50
整数はベクタ化の恩恵を受けにくいからじゃないかな。
単なるコピーならfloat32でも同じことだし。
0324デフォルトの名無しさん2010/04/15(木) 22:23:12
-mmmxとか-m3dnowじゃないと使わないんじゃない
SSEで全部まかなえるわけだし
0325デフォルトの名無しさん2010/04/15(木) 23:35:38
>>324
普通のSSEには整数命令入っていないよ
-mmmxや-m3dnowでもMMXレジスタは使っていなかった。
0326デフォルトの名無しさん2010/04/15(木) 23:52:09
alignmentしてないと速くなんないからじゃね?
0327デフォルトの名無しさん2010/04/16(金) 00:02:00
普通のSSEじゃないだろ最初のSSEだろ
0328デフォルトの名無しさん2010/04/16(金) 20:29:37
Pen4あたりから入り始めたんだっけ?
0329デフォルトの名無しさん2010/04/17(土) 19:38:11
何が? 最初のSSEはPenIIIだよ。
0330デフォルトの名無しさん2010/04/18(日) 01:19:50
pen3のsseは整数演算できない
0331デフォルトの名無しさん2010/04/18(日) 02:33:27
GCC4が登場した頃には整数SIMDができるSSE2の登場から数年経過しており、MMXに
よる整数SIMDの需要が少なかったからか?さらに、GCC4登場初期はスマートフォンや
PDAにiwmmxtが搭載されていたが、そもそも当時はスマートフォンが普及しておらず
MMX系の需要は少なかったからか。で、今ではスマートフォンが普及しgccに
armの128bit自動ベクトル化が搭載されたが、既に時代遅れのiwmmxtは対象外
という事か。
■ このスレッドは過去ログ倉庫に格納されています