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

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレGCCについて part10

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    351 : デフォルトの名無 - 2013/09/14(土) 10:36:33.97 .net (+11,-29,-87)
    >>349
    いやいや、上から順で正しい。再走査はマクロ展開時の話だよ。
    マクロ引数dataが展開された後に、その結果に対して再走査されて
    普通の地の文と同じようにsがマクロ展開される。

    最初のやつがうまく動かないのは、Cプリプロセッサは文字置き換えでなくて
    トークンを置きえるから。
    (6'(data)<<3) は (, 6, '(data)<<3) という3つのトークンになってしまう。
    352 : デフォルトの名無 - 2013/09/14(土) 13:34:26.01 .net (+54,+26,-13)
    プリプロセッサなんて自作しちゃいなよ
    353 : デフォルトの名無 - 2013/09/17(火) 16:30:56.00 .net (+57,+29,-9)
    正確に標準に従ったcppを作るのは案外大変だぞ?
    354 : デフォルトの名無 - 2013/09/24(火) 00:04:00.29 .net (+49,+30,+0)
    355 : デフォルトの名無 - 2013/11/04(月) 10:16:18.31 .net (+0,-29,-13)
    dev/nullを出力先に指定するとscanfなどで入力した内容が表示されなくなるという噂を聞きました
    どのように指定すると良いか教えてください
    356 : デフォルトの名無 - 2013/11/04(月) 10:35:57.62 .net (-2,-30,-11)
    >>355
    入力した内容なら、必要に応じて"/dev/stderr"(stderr)にでも出力すればいいじゃん。
    357 : デフォルトの名無 - 2013/11/04(月) 19:25:05.12 .net (+14,-30,-21)
    >>355
    scanf を実行する前に標準出力を /dev/null につけかえるのでは、pipe(), pipe2() とかで?
    358 : デフォルトの名無 - 2013/11/04(月) 19:39:51.62 .net (+46,+22,+3)
    >>357
    意味不明
    359 : デフォルトの名無 - 2013/11/04(月) 21:46:42.94 .net (+54,+29,+0)
    >>357
    はい、そのとおりです。
    360 : デフォルトの名無 - 2013/11/05(火) 14:08:37.22 .net (+1,-29,-2)
    >>357
    pipe2はlinux専用関数だがな
    361 : デフォルトの名無 - 2013/11/05(火) 17:17:29.77 .net (-1,-29,-4)
    >>360
    ウイーンドーズにも/dev/nullがあるんですか?
    362 : デフォルトの名無 - 2013/11/05(火) 17:20:56.19 .net (-1,-29,-2)
    Windows だと NUL だろ。
    363 : デフォルトの名無 - 2013/11/05(火) 21:07:31.14 .net (+12,-29,-50)
    察するに、パスワード入力ではechoさせたくないとかそれ系の話だろ?
    普通はtermiosやSetConsoleModeでやることで、標準出力を/dev/nullに付け替えるなんて教えた奴は凄いんだか意地悪なんだか
    364 : デフォルトの名無 - 2013/11/05(火) 21:23:56.90 .net (+59,+29,-13)
    >>363
    標準出力のリダイレクトでは、その望みを叶えられないのだが。
    凄くも何ともない。
    365 : デフォルトの名無 - 2013/11/10(日) 17:40:38.34 .net (+6,-30,-129)
    int f(int n) { while (--n) ; return n}
    がgcc -O2 (4.6.3)で
    int f(int ) { retunr 0; }
    のようにコンパイルされました。
    この最適化がヒューリスティック(パターンデータベースのようなもの)を使っているのか
    知りたいのですが、どのへんを調べればいいのでしょうか?

    (質問の意図は、自作の最適化器にもこの手の処理をいれたいのですが、
    場当たり的に入れるしかないのか、一般的な方法があるのかを知りたいということです。)
    366 : デフォルトの名無 - 2013/11/10(日) 18:35:36.33 .net (+66,+29,-19)
    ただの定数最適化に見える。
    あなたのレベルを分かるようにしないと、ドラゴンブック読めとか言われちゃうよ。
    367 : デフォルトの名無 - 2013/11/10(日) 18:37:40.20 .net (+66,+29,-14)
    >>366
    なんか見当違いなレスだなぁ
    368 : デフォルトの名無 - 2013/11/10(日) 20:37:34.22 .net (+3,-30,-219)
    すいません。ドラゴンブックは学生時代に買って眺めたことはあります。専攻はコンピュータ科学でした。
    コンパイラ関係はあまり深く学ばなかったとの、なにぶん10年以上のブランクがあるので、
    どの程度の難しさの問題なのかもわからないのです。
    定数最適化、なんでしょうか?
    while文が終わるとすれば0しかありえないですが、while文の停止性まで最適化器が判断できるのか疑問だったのです。
    追伸:
    int f(int n) { while (n=n-2) {} return n; } main() { f(-2); }
    とかだとnの偶奇(もっと一般のケースもいけるみたいです)で結果を変えるようです。
    -O0 と -O2 で実行時間が全然違ってしまいますが速くなる分にはいいんですよね。
    369 : デフォルトの名無 - 2013/11/10(日) 21:40:38.13 .net (+63,+30,-141)
    GCCはどうだか知りませんのでドラゴンブックレベルの一般論ですが、
    ループ最適化は普通にやるので、条件式は判断します。
    制約条件がそこではっきりするので最終的には通常の定数最適化
    パスで消えてるんじゃないでしょうか。
    ドラゴンブックに書いてなかったっけ?

    停止性が判断できるかという疑問ですが、判断できなければ
    最適化はやらないということになるはずです。
    逆に聞きたいのですが、ヒューリスティックに何かできる
    んでしょうか? 実行時判断みたいなもの?
    370 : デフォルトの名無 - 2013/11/10(日) 23:40:22.44 .net (+62,+29,-45)
    前半はなんとなくわかりました。ドラゴンブックは多分実家にあるので参照できませんが、、、
    後半ですが、誤用かもしれませんが経験則の意味で使いました。
    停止性は当然一般には判断できないので、どんな経験則を使ってるのかな、ってぐらいで、
    深い意味はなかったです。
    371 : デフォルトの名無 - 2014/01/04(土) 22:39:03.46 .net (+59,+27,+2)
    ドラゴンブックってなーに
    372 : デフォルトの名無 - 2014/01/04(土) 23:07:48.15 .net (+39,+21,+1)
    ぐぐれ
    373 : デフォルトの名無 - 2014/01/06(月) 14:56:20.27 .net (+57,+29,-27)
    教科書的な最適化はやってないと思うよ
    374 : デフォルトの名無 - 2014/01/06(月) 23:57:03.34 .net (+3,-29,-115)
    >>365
    ブロック内の変数に関数外の部分から影響を受けるかどうか(volatileやrestrictじゃないメモリ参照とか)のフラグを用意して、
    外部の影響を受けない変数や定数から構成された条件式は停止時の条件が計算できる可能が高いので最適化を試みるとか。
    似たような考え方でブロックが(大域変数などに)副作用を与えるかどうかを判断すれば簡略化やコードの削除ができるんじゃない?
    375 : デフォルトの名無 - 2014/01/09(木) 18:39:35.49 .net (+74,+30,-35)
    >>371
    中学生が大好きな架空の生物が掲載された魔導書だよ
    恐れおののきつつも憧れを抱き、本棚の奥で埃を被っている一冊
    忘れた頃に自分の娘がドラゴンを召喚して世界を崩壊へ誘ったりするアレ
    376 : デフォルトの名無 - 2014/01/09(木) 19:05:21.73 .net (+3,-30,-40)
    >>365
    l1: --n;
    if (n != 0) goto l1;
    return n;
    不変式解析で、
    l1: --n;
    if (n != 0) goto l1;
    return 0;
    nの非到達性で、
    return 0;
    377 : デフォルトの名無 - 2014/01/09(木) 23:33:20.23 .net (+61,+28,+2)
    >>375
    おもしろそうですね
    378 : デフォルトの名無 - 2014/01/22(水) 22:45:26.19 .net (+3,-30,-44)
    libdwarfがELFに依存してて泣ける…
    Windows(MinGW)だとPE+DWARFだから使えないのが残念

    MinGWのobjdump.exeは自力で解析してるから、ソースを参考にすれば
    なんとかなりそうだけどDWARFの知識が必要になるし…
    379 : デフォルトの名無 - 2014/01/22(水) 23:18:17.02 .net (-1,-29,-19)
    libdwarfをPE対応にしてupstreamにパッチ投げれば
    他の人も幸せになれるんでないの
    380 : デフォルトの名無 - 2014/01/22(水) 23:46:19.90 .net (+3,-29,-57)
    正直libdwarf内で最低限のELFエミュレーションをしようと思ってソース
    見たけどめげた…ごめんよ

    とりあえずobjdump.exeがやってるDWARF解析部分を解析してみるよ
    それでDWARFになじんだらまたトライしてみたい
    381 : デフォルトの名無 - 2014/02/13(木) 21:57:38.58 .net (-12,-29,-21)
    どうでもいいがCentOS最近入れたらデフォルトではインスコされてないんだな
    gccのないLinuxなんてLinuxじゃないやい
    382 : デフォルトの名無 - 2014/02/13(木) 22:29:35.18 .net (+53,+27,-26)
    CentOSのGCCは糞古いから最初から入ってなくても問題無い
    ただ新しいのを入れるには色々手間は掛かる
    383 : デフォルトの名無 - 2014/02/13(木) 22:46:51.56 .net (+33,+10,+1)
    3回コンパイルすりゃいいだけだろ
    384 : 片山博文MZ無能 - 2014/02/14(金) 19:50:03.01 .net (-1,-29,-15)
    gccとg++は最近不具合があるから、clangに乗り換えることにした。
    385 : デフォルトの名無 - 2014/02/14(金) 20:02:18.20 .net (+43,+25,+0)
    あそう
    386 : デフォルトの名無 - 2014/02/14(金) 21:13:38.73 .net (+41,+23,+0)
    あべ
    387 : デフォルトの名無 - 2014/02/14(金) 23:07:39.94 .net (+33,+15,-1)
    あべし
    388 : デフォルトの名無 - 2014/02/15(土) 01:10:07.47 .net (+45,+27,-12)
    ひでぶ
    389 : デフォルトの名無 - 2014/02/15(土) 04:20:34.58 .net (+53,+26,+0)
    たわば
    390 : デフォルトの名無 - 2014/02/15(土) 20:59:09.39 .net (+59,+29,+2)
    >>389
    やぁ 先輩
    391 : デフォルトの名無 - 2014/02/15(土) 21:26:10.59 .net (+52,+29,+0)
    お こんなとこいたか まぁ上がれ
    392 : デフォルトの名無 - 2014/02/15(土) 22:58:41.46 .net (+52,+29,-2)
    おう、唐突なあ~るスレやめろや
    393 : デフォルトの名無 - 2014/02/17(月) 15:17:28.49 .net (+52,+29,-2)
    うるさい! おまえなんかロボットだ
    394 : デフォルトの名無 - 2014/02/17(月) 16:03:52.41 .net (+57,+29,-2)
    助けて あーりんロボ!ピンチなの!
    395 : デフォルトの名無 - 2014/02/17(月) 21:00:58.58 .net (+39,+21,+0)
    とほほ
    396 : デフォルトの名無 - 2014/02/18(火) 21:19:37.28 .net (+52,+29,+0)
    埼玉県の地図さえあれば
    397 : デフォルトの名無 - 2014/02/18(火) 21:57:49.43 .net (+52,+29,+0)
    山田うどんの場所がわかる
    398 : デフォルトの名無 - 2014/02/18(火) 22:39:44.23 .net (+21,-6,-16)
    いろんなレガシー言語の墓場になってて面白いよね
    399 : ◆QZaw55 - 2014/03/17(月) 18:34:12.34 ID:rLCh2DtT.net (+32,+29,-17)
    >>394
    「ロボットじゃないよ,アンドロイドだよ」って応えないと
    400 : デフォルトの名無 - 2014/03/21(金) 17:27:54.35 ID:Qhdzl4hJ.net (+24,+29,-15)
    何を言ってる。
    あれは立派なロボだ。設計図を知らんのか。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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