Llyric Coloured Diary - りる色日記
2008/07版 その3

Last update: Mon, 28 Dec 2009 21:36:26 JST

[サイトのトップ] [GNOME] [987 Boxster] [SW20 MR2] [About Me]


2008/07/21 (月) [Cloudy]

(日常)

+ 9:00起動。


休養 (日常)

+ なんか久々の休養というか、 自宅でのんびり過ごす。



2008/07/22 (火) [Rainy, Fine later]

(日常)

+ 6:30起動。


お買い物 (購買, ゲーム, コミック)



2008/07/23 (水) [Fine, Rain]

(日常)

+ 6:00起動。


夕立 (日常)

+ というには遅い時間だが、 本庄早稲田を過ぎたあたりで車窓から前橋方面に激しい落雷を何度か目撃。 その後、 高崎駅にあと5分で到着というところで、 大雨に。

+ 高崎駅に着いたころが丁度雨のピークみたいで、 路面が物凄いことになっていた。 自分は、 駅下のコンビニに用事があったのでとりあえずピークはやり過ごす。

+ 高崎でこういうシーンに遭遇したのは久々の気がする (たいていは自分が会社にいる時間に起こっているようなので)。



2008/07/24 (木) [Fine]

(日常)

+ 6:30起動。


最適化のバグ? (計算機)

+ とあるC言語環境で以下のようなソースを最適化レベルをあげてコンパイルしてみたら、 「変数は値を代入する前に参照される可能性がある」という警告がでた。


char
foo( char* a, char* b )
{
    char d;
    d = 1;
    while ( *a != 空白文字 && (d = *a - *b) == 0 ) {
        a++;
        b++;
    }
    return d;
}

+ aやbのNULLチェックは?とかいう突っ込みは置いておいて、 コンパイラのマニュアルにも書いてあったように、


while ( cond ) {
    body;
}

+ が最適化レベルを上げると


if ( cond ) {
    do {
        body;
    } while ( cond )
}

+ になるのはいいとして、 condが論理演算子で結合されている式である場合のように、 必ずしもcond内の全ての変数が評価されるとは限らない状況なのに、 評価されるとみなされているのである。 この場合は、 d = *a - *bが必ず評価されるとみなされ、 ループ直前のd = 1が無駄なコードと解釈されるため 「dは代入される前に参照される可能性がある」と警告されるわけだ。 確かにd = 1が無ければ、 whileの最初の条件*a != 空白文字が成立しないと(つまり空白文字の場合)、 return dで不定値が返ることになる(実際に問題になるのは不定値がたまたま0だった場合)。 実際、 吐き出されたアセンブラソースからd=1は抜け落ちてしまっている上に、 *a != 空白文字が不成立の場合は即座に (初期化も代入もされていないために中身が何であるか分からない)dに相当するレジスタの内容を戻り値として採用している。

+ ちなみに、 d=1の代わりに定義時にchar d=1と初期化してあげれば、 正しくコンパイルされるようである。

+ 自分はコンパイラの最適化論については全くもって明るくないので、 これが最適化の手法として日常的かどうかは良くわからないが、 個人的には不具合とみなしたくなってくる。 まあ、 なぜ定義時に初期化せず、 わざわざ代入文を用いているのか、 と問われると返答に窮するのも事実だが....。 とりあえず、 コンパイラバージョンを上げて試してみなければ。

+ 自分の無知というだけの話なら、 不勉強をただただ恥じるばかり、 ということになるなぁ。



2008/07/25 (金) [Fine]

(日常)

+ 6:30起動。


お買い物 (購買, 音楽)

+ ちょっとだけ触ってみたけど、 かなり面白そう。 でも、 本格的にいじるのはDQ5が終わってからだなぁ。


最適化バグ(つづき) (PC)

+ 先日の件。 サポートに問い合わせてみたら、 どうやら最新版パッチでも再現するらしいので、 開発元に報告してみる、 だそうな。



2008/07/26 (土) [Fine]

(日常)

+ 8:00起動。


前響合宿@妙義 (イベント, 音楽)

+ 午後から妙義で前響の合宿。 エグモントの合奏、 ハイドンバリエーションの分奏、 シベ1の合奏(1、2楽章)。

+ 自宅から下道のみでも片道1時間くらいなので、 今回は宿泊せずに帰宅。



2008/07/27 (日) [Cloudy, Rain later]

(日常)

+ 6:15起動。


前響合宿2日目@妙義 (イベント, 音楽)

+ 朝は道が空いていて楽。

+ 今日は合奏のみで、 ハイドンバリエーションとシベ1の3楽章。


お買い物 (購買, アニメ, 音楽, PC)

+ ようやくReal Stratが届いた。 とりあえずインストールのみ。



2008/07/28 (月) [Rain, Fine later]

(日常)

+ 6:30起動。


通院 (健康)

+ かれこれ2週間以上咳が止まらないので(会社の産業保険部で薬を処方してもらっても改善せず)、 近所の内科でレントゲンを撮ってもらい薬を出してもらった。 おそらくはアレルギー性だろうとのこと。

+ そういえば、 咳が止まらずに吸入ステロイドのお世話になったのも2年前の今頃だったか。


お買い物 (購買, コミック)



2008/07/29 (火) [Fine]

(日常)

+ 6:30起動。


911 Targa 4 Type 997 マイナーチェンジ ()

+ 予想通り、 911 Type 997のマイナーチェンジの最後を飾るのはTarga 4とTarga 4S。

+ 本国には6MTと7PDKの設定があるが、 日本に導入されるのは7PDKのみのようだ。



2008/07/30 (水) [Fine]

(日常)

+ 6:30起動。


お買い物 (購買, コミック)



2008/07/31 (木) [Fine]

(日常)

+ 6:30起動。


Lebhaft定例 (イベント)

+ いつものJSレネップにて。

+ 序盤は珍しく車ネタ中心。 後半はいつものごとく音楽ネタ。




[サイトのトップ]

メールはこちらへ...[Hideki AWATA (llyr @(at) nifty .(dot) com)]

この日記は、GNSを使用して作成されています。