祝・GCC 3.0リリース

このエントリーをはてなブックマークに追加
704名無しさん@お腹いっぱい。:2008/08/11(月) 16:22:53
>>701
つ シーケンスポイント
規格持っているならそこを読んで。
ないならググッて。
705名無しさん@お腹いっぱい。:2008/08/11(月) 16:28:20
せっかく2.95を超える世界制覇バージョンとなることが約束された3.0がリリースされたのに
他に言うことはないのか?
706名無しさん@お腹いっぱい。:2008/08/11(月) 16:36:02
ないな。
707名無しさん@お腹いっぱい。:2008/08/11(月) 17:54:18
「シーケンスポイントに関する規約」に適合していないプログラムは
実行結果が保証されないことが分かった。
 さて、そうなると、規約を破っているソースコードに対しては、
それを警告してくれるコンパイラの機能が望まれる。
GCCではそのあたりがどうなっているのだろうか?
708名無しさん@お腹いっぱい。:2008/08/11(月) 18:27:46
>>707
試せよ。
709名無しさん@お腹いっぱい。:2008/08/11(月) 22:29:33
もうこの板のスレ2年過ぎたら強制dat落ちにしようぜ・・・
710名無しさん@お腹いっぱい。:2008/08/12(火) 01:20:16
5年先まで見通してスレ立てればいいだけの話
711名無しさん@お腹いっぱい。:2008/08/12(火) 11:18:38
投票所を作って、反対意見が出ないようなら削除依頼とかな
依頼してもなかなか削除されねーけど
712名無しさん@お腹いっぱい。:2008/08/14(木) 10:05:42
>>701
なつかしいな、それ。KYKだっけ?
713名無しさん@お腹いっぱい。:2008/08/14(木) 21:37:52
>>703
それは冗談で言っているのか。
714名無しさん@お腹いっぱい。:2008/08/16(土) 04:42:49
715名無しさん@お腹いっぱい。:2008/08/18(月) 03:16:26
>>712
Yじゃねえ。
Nだ。


716名無しさん@お腹いっぱい。:2008/08/18(月) 05:34:08
717名無しさん@お腹いっぱい。:2008/08/25(月) 03:29:13
このしらいさんという方も勘違いしてますね。
718名無しさん@お腹いっぱい。:2008/10/05(日) 05:53:48 BE:1345128858-2BP(0)
OpenBSDは未だに、2.95ですね。
719名無しさん@お腹いっぱい。:2009/01/11(日) 15:34:03
gccで関数プロトタイプ宣言を自動的に生成する機能があると聞いたのですが、
ぐぐってみてもそのような機能は見つかりませんでした。
もし本当にそういう機能があれば、どなたか教えていただけないでしょうか。
またgccに限らず、*.cから*.hを自動的に生成するツールについておすすめのものがあれば教えてください。
720名無しさん@お腹いっぱい。: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
というエラーが出ます。どう修正するのが適切ですか?
722名無しさん@お腹いっぱい。: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) {}
};
とする。
723名無しさん@お腹いっぱい。:2011/06/11(土) 08:59:42.53
>>722
ありがとうございます。それでやってみます。

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

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

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

ただ、今の言語規格ではAのコンストラクタは必ずBのコンストラクタに先立って実行されるので、
継承元のコンストラクタを呼んでるようなコードが、Bのクラスの一番初めの実行文でない場合、
処理の実行に影響がないかどうかは気をつけないといけないと思う。
727名無しさん@お腹いっぱい。:2011/06/11(土) 17:30:51.28
>>725
コンストラクタを呼んでるつもりで、実は一時オブジェクトを作って捨ててるだけ、ってのはたまに見る。
公開されてるソフトにそんなの入ってるとは思わないけどな。
ソフト名を晒してくれると面白いかもしれない。
728名無しさん@お腹いっぱい。:2011/06/11(土) 17:36:41.18
初期化子は結構早い段階で規格に入っているしなあ。
"annotated"の頃には入っていたんじゃない?
729名無しさん@お腹いっぱい。: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
自己解決しました
732名無しさん@お腹いっぱい。:2012/09/15(土) 11:26:35.79
>>731
どうやって解決したの?
733名無しさん@お腹いっぱい。:2012/09/15(土) 11:37:47.55
回答できなかった者の逆に教える義理はないよ
734名無しさん@お腹いっぱい。:2012/09/15(土) 12:43:03.30
日本語で。
735名無しさん@お腹いっぱい。:2012/09/15(土) 13:18:08.40
元々疑問にも思ってなかったことの回答聞かされても誰も興味ねーだろ
736名無しさん@お腹いっぱい。:2012/09/15(土) 22:13:01.41
このスレなんですか
737名無しさん@お腹いっぱい。: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にしてください。

教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
738名無しさん@お腹いっぱい。:2012/09/16(日) 17:09:36.03
739名無しさん@お腹いっぱい。: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)で値を取ってくる。
740名無しさん@お腹いっぱい。:2013/08/20(火) NY:AN:NY.AN
ほむほむ
741名無しさん@お腹いっぱい。:2013/09/02(月) 20:03:19.80
祝・GCC 3.0リリース
742名無しさん@お腹いっぱい。:2013/09/27(金) 16:40:54.47
祝・GCC 3.0リリース
743 【中吉】 忍法帖【Lv=40,xxxPT】(1+0:8) 【18.2m】 電脳プリオン:2014/02/01(土) 19:08:01.00 BE:405408285-PLT(12081)
今のバージョンは?
744名無しさん@お腹いっぱい。:2014/04/05(土) 23:11:46.52
745名無しさん@お腹いっぱい。:2014/05/15(木) 12:13:07.18
ぬるぽ
746名無しさん@お腹いっぱい。:2014/07/05(土) 12:28:40.14
かっ!
747名無しさん@お腹いっぱい。:2014/07/17(木) 17:18:58.35
>>745
ガッ!
748名無しさん@お腹いっぱい。:2014/08/04(月) 23:44:00.06
749名無しさん@お腹いっぱい。:2014/08/20(水) 07:50:18.80
ぬるぽ
750名無しさん@お腹いっぱい。: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回埋め込まれる)
これをひとつにまとめるオプションか何かありますか?
752名無しさん@そうだ選挙に行こう:2014/12/13(土) 21:31:28.90
まとめられるだろw
753名無しさん@そうだ選挙に行こう
-flto
?