元スレGCCについて part10
gcc覧 / PC版 /みんなの評価 :
351 = :
>>349
いやいや、上から順で正しい。再走査はマクロ展開時の話だよ。
マクロ引数dataが展開された後に、その結果に対して再走査されて
普通の地の文と同じようにsがマクロ展開される。
最初のやつがうまく動かないのは、Cプリプロセッサは文字置き換えでなくて
トークンを置きえるから。
(6'(data)<<3) は (, 6, '(data)<<3) という3つのトークンになってしまう。
352 = :
プリプロセッサなんて自作しちゃいなよ
353 = :
正確に標準に従ったcppを作るのは案外大変だぞ?
354 = :
355 = :
dev/nullを出力先に指定するとscanfなどで入力した内容が表示されなくなるという噂を聞きました
どのように指定すると良いか教えてください
357 = :
>>355
scanf を実行する前に標準出力を /dev/null につけかえるのでは、pipe(), pipe2() とかで?
358 = :
>>357
意味不明
359 = :
>>357
はい、そのとおりです。
360 = :
>>357
pipe2はlinux専用関数だがな
363 = :
察するに、パスワード入力ではechoさせたくないとかそれ系の話だろ?
普通はtermiosやSetConsoleModeでやることで、標準出力を/dev/nullに付け替えるなんて教えた奴は凄いんだか意地悪なんだか
364 = :
>>363
標準出力のリダイレクトでは、その望みを叶えられないのだが。
凄くも何ともない。
365 = :
int f(int n) { while (--n) ; return n}
がgcc -O2 (4.6.3)で
int f(int ) { retunr 0; }
のようにコンパイルされました。
この最適化がヒューリスティック(パターンデータベースのようなもの)を使っているのか
知りたいのですが、どのへんを調べればいいのでしょうか?
(質問の意図は、自作の最適化器にもこの手の処理をいれたいのですが、
場当たり的に入れるしかないのか、一般的な方法があるのかを知りたいということです。)
366 = :
ただの定数最適化に見える。
あなたのレベルを分かるようにしないと、ドラゴンブック読めとか言われちゃうよ。
367 = :
>>366
なんか見当違いなレスだなぁ
368 = :
すいません。ドラゴンブックは学生時代に買って眺めたことはあります。専攻はコンピュータ科学でした。
コンパイラ関係はあまり深く学ばなかったとの、なにぶん10年以上のブランクがあるので、
どの程度の難しさの問題なのかもわからないのです。
定数最適化、なんでしょうか?
while文が終わるとすれば0しかありえないですが、while文の停止性まで最適化器が判断できるのか疑問だったのです。
追伸:
int f(int n) { while (n=n-2) {} return n; } main() { f(-2); }
とかだとnの偶奇(もっと一般のケースもいけるみたいです)で結果を変えるようです。
-O0 と -O2 で実行時間が全然違ってしまいますが速くなる分にはいいんですよね。
369 = :
GCCはどうだか知りませんのでドラゴンブックレベルの一般論ですが、
ループ最適化は普通にやるので、条件式は判断します。
制約条件がそこではっきりするので最終的には通常の定数最適化
パスで消えてるんじゃないでしょうか。
ドラゴンブックに書いてなかったっけ?
停止性が判断できるかという疑問ですが、判断できなければ
最適化はやらないということになるはずです。
逆に聞きたいのですが、ヒューリスティックに何かできる
んでしょうか? 実行時判断みたいなもの?
370 = :
前半はなんとなくわかりました。ドラゴンブックは多分実家にあるので参照できませんが、、、
後半ですが、誤用かもしれませんが経験則の意味で使いました。
停止性は当然一般には判断できないので、どんな経験則を使ってるのかな、ってぐらいで、
深い意味はなかったです。
371 = :
ドラゴンブックってなーに
372 = :
ぐぐれ
373 = :
教科書的な最適化はやってないと思うよ
374 = :
>>365
ブロック内の変数に関数外の部分から影響を受けるかどうか(volatileやrestrictじゃないメモリ参照とか)のフラグを用意して、
外部の影響を受けない変数や定数から構成された条件式は停止時の条件が計算できる可能が高いので最適化を試みるとか。
似たような考え方でブロックが(大域変数などに)副作用を与えるかどうかを判断すれば簡略化やコードの削除ができるんじゃない?
375 = :
>>371
中学生が大好きな架空の生物が掲載された魔導書だよ
恐れおののきつつも憧れを抱き、本棚の奥で埃を被っている一冊
忘れた頃に自分の娘がドラゴンを召喚して世界を崩壊へ誘ったりするアレ
376 = :
>>365
l1: --n;
if (n != 0) goto l1;
return n;
不変式解析で、
l1: --n;
if (n != 0) goto l1;
return 0;
nの非到達性で、
return 0;
377 = :
>>375
おもしろそうですね
378 = :
libdwarfがELFに依存してて泣ける…
Windows(MinGW)だとPE+DWARFだから使えないのが残念
MinGWのobjdump.exeは自力で解析してるから、ソースを参考にすれば
なんとかなりそうだけどDWARFの知識が必要になるし…
380 = :
正直libdwarf内で最低限のELFエミュレーションをしようと思ってソース
見たけどめげた…ごめんよ
とりあえずobjdump.exeがやってるDWARF解析部分を解析してみるよ
それでDWARFになじんだらまたトライしてみたい
382 = :
CentOSのGCCは糞古いから最初から入ってなくても問題無い
ただ新しいのを入れるには色々手間は掛かる
383 = :
3回コンパイルすりゃいいだけだろ
385 = :
あそう
386 = :
あべ
387 = :
あべし
388 = :
ひでぶ
389 = :
たわば
390 = :
>>389
やぁ 先輩
391 = :
お こんなとこいたか まぁ上がれ
392 = :
おう、唐突なあ~るスレやめろや
393 = :
うるさい! おまえなんかロボットだ
394 = :
助けて あーりんロボ!ピンチなの!
395 = :
とほほ
396 = :
埼玉県の地図さえあれば
397 = :
山田うどんの場所がわかる
398 = :
いろんなレガシー言語の墓場になってて面白いよね
399 :
>>394
「ロボットじゃないよ,アンドロイドだよ」って応えないと
400 :
何を言ってる。
あれは立派なロボだ。設計図を知らんのか。
みんなの評価 :
類似してるかもしれないスレッド
- GCCについて part8 (763) - [90%] - 2009/3/11 8:47 ☆
- GCCについて part9 (1001) - [90%] - 2011/9/2 21:17 ○
- 【激遅】AppleGCC【絶望】 (111) - [18446744073709551609%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について