X

祝・GCC 3.0リリース

■ このスレッドは過去ログ倉庫に格納されています
1さあね
垢版 |
NGNG
 一昔前は、そこらの商用コンパイラよりも良い最適化をする
といわれたGCCも最近は色あせてきてたけど。。。
 待望の新バージョンリリースで巻き返しなるか?

 とりあえずインストールしてみよう
2006/02/27(月) 18:26:02
2.5.8とか
2006/02/27(月) 18:48:03
gcc-1.4.2 はいいデキでしたよ。
2006/02/28(火) 12:40:22
>>654
評価っていうかジンクスでしょ
2006/03/01(水) 15:25:28
gcc-4.1.0 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
659名無しさん@お腹いっぱい。
垢版 |
2006/03/02(木) 04:56:28
maji?
2006/03/02(木) 06:29:44
>>659
http://gcc.gnu.org/

> February 28, 2006
> GCC 4.1.0 has been released.

http://gcc.gnu.org/gcc-4.1/
2006/03/02(木) 21:52:08
4.0.2 までは素直にbuild通ってたのに4.1.0で落ちる orz
Solarisダメポ
2006/03/03(金) 12:29:17
Solarisはgccのバージョンが上がる最初の版は大抵そのままではうまくいかないw
2006/03/04(土) 18:54:23
New GCC Heavy on Optimization
http://www.internetnews.com/dev-news/article.php/3588926
664名無しさん@お腹いっぱい。
垢版 |
2006/03/05(日) 11:34:19
>>663 kwsk
665!= 633
垢版 |
2006/03/05(日) 15:06:27
>>664
十分に詳しいと思うが。もっと必要ならWikiなりML Archiveなり漁るが良し。
666名無しさん@お腹いっぱい。
垢版 |
2006/03/05(日) 17:30:07
「今度こそ、GCC 4.1正式リリース」
http://slashdot.jp/article.pl?sid=06/03/05/0253210
2006/03/11(土) 16:00:02
4.1使った人、どうよ?
2006/03/12(日) 15:01:42
.0のバージョンの割には3.4.0や4.0.0の時よりいい
2006/03/13(月) 19:49:58
GCC 4.0.3
http://kerneltrap.org/node/6320
2006/03/14(火) 10:19:50
sparc Solaris9 でlibtool と texinfo 入れて --disable-libgcj したらなんとか
gcc4.1.0コンパイルできた・・・
-m64 も使える。さて、何からやるか。
2006/03/15(水) 17:53:04
ちょっとコンパイルしてみたけど、以前のバージョンなら通ってたものが
エラーになるね。
error: static declaration of 'XXXXX' follows non-static declaration
とか、、、該当行のstatic外したら通ったが。
2006/03/19(日) 02:39:52
4系列になってから、全体的にCの構文に厳しくなったらしい。
muttなんかも構文警告が構文エラーになって、ビルドできなかった事がある。
2006/03/19(日) 22:33:39
3も2よりだいぶ厳しくなったといわれてたな。
2006/03/20(月) 12:26:36
LLVMまだ?
2006/03/25(土) 16:36:31
gcc4.1.0でgcc4.1.0を何回もコンパイルすると不定期にアセンブラが.identが見付からないよと言う壊れたコンパイラになる
2006/05/26(金) 15:37:24
gcc4.1.1きた?
2006/05/26(金) 17:14:25
>>676
ktkr
ttp://gcc.gnu.org/gcc-4.1/
2006/05/30(火) 15:35:05
gcc-4.1.1 Solaris玉砕 T_T);
2006/05/30(火) 20:31:56
GCCもそうだけど、GNUのツールってだいぶLinux-centricに
なってきて、広い影響力は以前より落ちている気がするね。
2006/05/31(水) 15:24:52
NetBSD-currentなんかも、ずっと3.3.3のまんまだもんな。

*BSDにおいてはGNU関連ツールは使わざるを得ないから使ってると
誰かが雑誌で言ってたな。
2006/05/31(水) 20:49:12
NetBSDは只今GCC4に切り替え中。

確かに NetBSD ぐらい CPU に対応してると、それ全部で使えるコンパイラを
新たに用意するのは難しいでしょうね。
GCCでもマイナーなCPUは切り捨てそうですけど。
2006/06/27(火) 20:26:29
OpenCC書いてくれTheo
683名無しさん@お腹いっぱい。
垢版 |
2006/09/03(日) 11:45:37
gcc 大きくなりすぎ
もっと軽い free な cc ないんだっけ?
2006/09/03(日) 12:14:51
お前には関係ない。
2006/09/03(日) 12:17:23
ビーのコアチームとやらで作ればいいじゃんwwwwwwwww
2006/09/04(月) 00:21:07
>>683
TenDRAを入れたいんだが未手付
ttp://www.tendra.org/
ttp://www.ten15.org/

後lccというのがある
ttp://www.cs.princeton.edu/software/lcc/
2006/09/04(月) 02:43:19
吐くコードが小さくて速けりゃgccが大きくたって問題はなかろうに。
軽い処理系だと十分なoptimizeができるとは思えんが。
2006/09/04(月) 13:12:28
gccもそのうちXみたいにモジュール化するんだろうか
2006/09/04(月) 14:12:08
TCC: Tiny C Compiler
http://fabrice.bellard.free.fr/tcc/

>>687
小さい軽い処理系に最適化なんて求めないよ
2006/09/04(月) 15:46:35
サイズに関する最適化は欲しい
2006/09/04(月) 18:40:32
熟女系の作品だとサイズが縮みます。
2006/09/04(月) 20:52:37
膨らむ奴もいる
2007/10/12(金) 01:45:29
保守
2007/10/18(木) 17:53:02
>>681
gccの問題というより、
NetBSDの方がバージョン移行のCPUテスター不足なんじゃないの?
Linuxはバージョン上げるのに成功しているし。
マイナーだと厳しいよね。
2007/11/04(日) 14:20:56
>>694
Linuxはとりあえずバージョン上げて、何かあったら大騒ぎするというやり方。
2008/02/16(土) 21:02:53
「Linuxは」というほどディストリでgccの扱い共通してない。
カーネルがgcc依存ってのくらい。
2008/06/06(金) 17:54:46
Fedora Core辺りは、
> とりあえずバージョン上げて、何かあったら大騒ぎする
のが仕事だしね。
698名無しさん@お腹いっぱい。
垢版 |
2008/06/24(火) 22:58:25
ほう、ついにGCC3.0が出たのか・・・時代の最先端を行く俺には欠かせないツールになるよ
699名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 12:31:36
ところで、昔のC言語ではダメだったのに、今のCコンパイラでは
double sqrt(double); に
sqrt(2) とか引数に整数などdouble でないものを書いてもちゃんと
コンパイルして2の平方根の近似値を返すのはどうして?
プロトタイプ宣言を元にして、引数の型の自動変換が行われるの?
それってC++の仕様じゃないかな?
2008/08/11(月) 12:46:07
タイムトラベラーの方ですか?

C89以降、関数のプロトタイプ宣言(とそれに基いた昇格)はCでも当たり前の事ですが。
701名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 16:11:49
ついでに質問しちゃおう。xを変数とするとき、

x = x++;

という代入文は、結果がどうなるか不定だと思うんだけども、
そこのあたりどうなっているでしょうか?
2008/08/11(月) 16:13:33
ム板で聞いた方がよくね
2008/08/11(月) 16:21:06
>>701
おいおい、よく見てみろ。(例が悪いよ)
= と ++ の動作が、どちらが先だとしても x の値は +1 されるだろ。
よって、結果がどうなるか不定ではない。
2008/08/11(月) 16:22:53
>>701
つ シーケンスポイント
規格持っているならそこを読んで。
ないならググッて。
2008/08/11(月) 16:28:20
せっかく2.95を超える世界制覇バージョンとなることが約束された3.0がリリースされたのに
他に言うことはないのか?
2008/08/11(月) 16:36:02
ないな。
707名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 17:54:18
「シーケンスポイントに関する規約」に適合していないプログラムは
実行結果が保証されないことが分かった。
 さて、そうなると、規約を破っているソースコードに対しては、
それを警告してくれるコンパイラの機能が望まれる。
GCCではそのあたりがどうなっているのだろうか?
2008/08/11(月) 18:27:46
>>707
試せよ。
2008/08/11(月) 22:29:33
もうこの板のスレ2年過ぎたら強制dat落ちにしようぜ・・・
2008/08/12(火) 01:20:16
5年先まで見通してスレ立てればいいだけの話
2008/08/12(火) 11:18:38
投票所を作って、反対意見が出ないようなら削除依頼とかな
依頼してもなかなか削除されねーけど
2008/08/14(木) 10:05:42
>>701
なつかしいな、それ。KYKだっけ?
2008/08/14(木) 21:37:52
>>703
それは冗談で言っているのか。
714名無しさん@お腹いっぱい。
垢版 |
2008/08/16(土) 04:42:49
ぐぐった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20958&forum=12&4
2008/08/18(月) 03:16:26
>>712
Yじゃねえ。
Nだ。


2008/08/18(月) 05:34:08
knkなつかしい.

ttp://pc.2ch.net/unix/kako/970/970678691.html
ttp://pc.2ch.net/unix/kako/1022/10221/1022165761.html
ttp://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/68560
ttp://web.archive.org/web/20030415200641/http://www.interq.or.jp/writer/knk/kyo/may23.html
2008/08/25(月) 03:29:13
このしらいさんという方も勘違いしてますね。
718名無しさん@お腹いっぱい。
垢版 |
NGNG?2BP(0)
OpenBSDは未だに、2.95ですね。
719名無しさん@お腹いっぱい。
垢版 |
2009/01/11(日) 15:34:03
gccで関数プロトタイプ宣言を自動的に生成する機能があると聞いたのですが、
ぐぐってみてもそのような機能は見つかりませんでした。
もし本当にそういう機能があれば、どなたか教えていただけないでしょうか。
またgccに限らず、*.cから*.hを自動的に生成するツールについておすすめのものがあれば教えてください。
2009/01/11(日) 19:31:36
GCC3スレにようこそw

ttp://www.kouno.jp/home/c_faq/c11.html#31
> 関数プロトタイプの自動生成ソフトはいくつか存在する。多くはlint に手を
> 入れたものになっている。CPROTOというプログラムが1992年3 月に
> comp.sources.miscにポストされた。他にもcextractというツー ルが存在する。
> コンパイラのベンダーの多くは単純なユーティリティー を用意している。
> 質問18.16も参照のこと。(古いコード用にプロトタ イプを生成するときは"狭い"
> 引数に注意すること。質問11.3も参照の こと。)

gccにそういう機能ってあったかなぁ
721名無しさん@お腹いっぱい。
垢版 |
2011/06/11(土) 00:12:40.83
class A { public: A(){} };

class B : public A
{
B() {A::A();}
};


↑こういうコードで、g++-4.1.2だとエラーなし、
g++-4.6.0だと cannot call constructor 'B::A' directly
というエラーが出ます。どう修正するのが適切ですか?
2011/06/11(土) 07:25:12.63
>>721
class A { public: A(){} };

class B : public A
{
B() {}
};

で、暗黙的にAのコンストラクタが呼ばれる。
もしくは、渡す引数があれば、
class A { public: A(int arg){} };

class B : public A
{
B() : A(123) {}
};
とする。
2011/06/11(土) 08:59:42.53
>>722
ありがとうございます。それでやってみます。

ところで、逆に Bをコンストラクトする時に、
暗黙にAのコンストラクタを呼ばないようにするにはどうしたらいいですか?
2011/06/11(土) 09:04:05.21
>>723
理屈上おかしいし、それは多分できない。

実装上は、Aに何もしないコンストラクタを用意すれば、呼ばれてないのと同じことにはなるかもしれない。
2011/06/11(土) 09:20:46.87
>>724
できないんですね。わかりました

ところで、最初の >>721 の質問のように
わざわざ継承元のコンストラクタを呼んでるようなコードが
複数のソフトで見つかるんですが
これ、何か意味があったのではないのでしょうか?
それとも、こういう誤解が広範囲に広まっていたのでしょうか?
2011/06/11(土) 12:08:55.06
>>725
実はC++に詳しくないので、そういう書き方があったのは初めて知った。
今の言語規格にはないやり方で、わざわざ利用しているとしたら、理由はわからない。

ただ、今の言語規格ではAのコンストラクタは必ずBのコンストラクタに先立って実行されるので、
継承元のコンストラクタを呼んでるようなコードが、Bのクラスの一番初めの実行文でない場合、
処理の実行に影響がないかどうかは気をつけないといけないと思う。
2011/06/11(土) 17:30:51.28
>>725
コンストラクタを呼んでるつもりで、実は一時オブジェクトを作って捨ててるだけ、ってのはたまに見る。
公開されてるソフトにそんなの入ってるとは思わないけどな。
ソフト名を晒してくれると面白いかもしれない。
2011/06/11(土) 17:36:41.18
初期化子は結構早い段階で規格に入っているしなあ。
"annotated"の頃には入っていたんじゃない?
2011/06/11(土) 17:59:56.17
>>727
kdeaddons-3.5.10の中の kate/tabbarextension/plugin_katetabbarextension.h
というファイルでそういう箇所があります。(本家で公開されてるソースです)

gccのバージョンを上げるとエラーになるため、問題が発覚します。
730名無しさん@お腹いっぱい。
垢版 |
2012/09/14(金) 21:23:43.48
GNU asで、

mov (%ebx), %eax ← ディスプレイスメント(オフセット)なし
mov 0x12(%ebx), %eax ← 8bitディスプレイスメント
mov 0x12345678(%ebx), %eax ← 32bitディスプレイスメント

のようなアドレッシングモードがあって、
ディスプレイスメントのサイズの違う各命令のどれを使うかは
アセンブル時に実際の値で判断して自動決定されますが、

敢えてディスプレイスメントのサイズを明示指定するにはどう書けばいいんでしょう?

たとえば、強制的に32bitディスプレイスメントの命令を使いたいのですが、
mov 0x00000000(%ebx), %eax とか書いても
mov (%ebx), %eax でアセンブルされてしまいます。(dispなし)

mov 0x00000012(%ebx), %eax とか書いても
mov 0x12(%ebx), %eax でアセンブルされてしまいます。(dispは8bit)

(わかってるとは思いますが、オペランドのデータサイズのことではありません)

命令コードを直接.byteで書け、はナシでお願いします。

わかる方いますか?
731730
垢版 |
2012/09/15(土) 10:44:48.95
自己解決しました
2012/09/15(土) 11:26:35.79
>>731
どうやって解決したの?
2012/09/15(土) 11:37:47.55
回答できなかった者の逆に教える義理はないよ
2012/09/15(土) 12:43:03.30
日本語で。
2012/09/15(土) 13:18:08.40
元々疑問にも思ってなかったことの回答聞かされても誰も興味ねーだろ
736名無しさん@お腹いっぱい。
垢版 |
2012/09/15(土) 22:13:01.41
このスレなんですか
2012/09/16(日) 16:27:31.40
今月はじめ、職場に新しい組み込みマシン(ファンレスの結構省電力構成)が入りました。
多分私が開発全般をまかされそうな雰囲気です。業務的にとある構造分析や
シミュレーションなど行う必要があり、プログラムにアセンブラを使用するのは
聞いていたのですが、添付のサンプルソースコードからチラッと見えたのは
LD A,(HL)という命令でした。

「うへぇ〜、よりによってZ80かよ」

アドレッシングモード皆無、リロケート不可、使いにくいインデックスレジスタ、
今時の関数引数のスタック渡しに対応できるのか不安はつきませんし、
今の若者はこんなCPU使わないので人材も少なくソフト開発も大変です。
おそらく導入に際して、大学など教育機関で最初にZ80に触れて刷りこまれた人間が
強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。

昔、当時、8bitCPUでi8080上位互換でi8085よりも多くのツギハギ命令を追加拡張した
Z80は大学など教育機関に浸透していて、日本のCPU界に多くのバカが輩出しました。

これから私は、おそらくそういうバカが、ADD A,(HL)はできるのにADD B,(HL)は
できないのかとか、相対アドレスのCALL命令はないのとか、
スタックフレームポインタとして使いたいのにLD HL,SPっていう命令ないじゃんとか、
アセンブラ通気取りの偏ったどうでもいい我侭を言い出し(だからZ80使うんじゃねーよ)
それと戦わなければならないのでしょう。そして時代によって決着している、
過去30余年のCPU界隈のくだらないそれらの議論が再現され、それに巻き込まれるの
でしょう。もう今からうんざりです。

だからお願いです。教育現場ではi386でもi568でもi686でも
x86_64でもなんでもいいですが現行のCPUにしてください。

教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
2012/09/16(日) 17:09:36.03
コピペ改変
http://engawa.2ch.net/test/read.cgi/linux/1263028279/298
2012/09/16(日) 21:18:01.14
>>737
ネタニマジレスするとLD HL,SPは LD HL,0 / ADD HL,SP で桶。
スタックフレームならオフセット加算は必須なので、
オフセットを先にHLにロードしておいてからSPを加算する。
例えば関数の第1引数ならreturn addressの2byteの次だから、
LD HL,2 / ADD HL,SP ってやって、以降(HL)で値を取ってくる。
2013/08/20(火) NY:AN:NY.AN
ほむほむ
2013/09/02(月) 20:03:19.80
祝・GCC 3.0リリース
2013/09/27(金) 16:40:54.47
祝・GCC 3.0リリース
NGNG?PLT(12081)
今のバージョンは?
2014/04/05(土) 23:11:46.52
2014/05/15(木) 12:13:07.18
ぬるぽ
2014/07/05(土) 12:28:40.14
かっ!
2014/07/17(木) 17:18:58.35
>>745
ガッ!
2014/08/04(月) 23:44:00.06
2014/08/20(水) 07:50:18.80
ぬるぽ
2014/09/01(月) 13:54:42.23
祝・GCC 3.0リリース
751名無しさん@そうだ選挙に行こう
垢版 |
2014/12/13(土) 21:22:45.35
質問です。

gccって、同じ文字列をまとめて最適化してくれますよね、
ソース中に複数 "hogehoge" と "hogehoge" のように同じ文字列があった場合。

ソースファイルが1個の時はこれでいいんですが、
ソースが file1.c と file2.c に分かれてる時、
file1.c に "hogehoge" があって、file2.c にも同じ "hogehoge" があっても
コンパイル(リンク)したときにまとめてくれません。(同じ文字列2回埋め込まれる)
これをひとつにまとめるオプションか何かありますか?
2014/12/13(土) 21:31:28.90
まとめられるだろw
2014/12/13(土) 21:59:47.68
-flto
?
2016/02/28(日) 18:25:05.39
GCC 6の新機能が明らかに
http://news.mynavi.jp/news/2016/02/28/084/
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況