[H8-ML(5496)] アーキテクチャとCのコーディング
From: Shigeru Makino <mac@xxxxxxx>
Date: 2005年02月25日(金)11時05分31秒
macです。

>この例えは、随分昔に目にした事が有りますが、正直、CISCだから、
>RISCだからは関係無く、CPUアーキテクチャに依存すると思われます。
>CISCでも、C言語で使われる事を意識したアーキテクチャのCPUは、
>コンパイラ次第でコード効率が高くなりますから。
>  
>
Cを意識しないで作られた、CISCってあるんでしょうか?
という突っ込みはさておき…

アーキテクチャを意識しながら、
Cを書くってなんだかちょっとずれたコーディングですね。
アセンブラならアーキテクチャを意識するのは、
当然ですが、そのレベルを隠蔽するのが、
高級言語の役目のひとつです。
まあ、だからCは高級「アセンブラ」なんでしょうが。

配列は添え字でなくポインタでアクセスする。
添え字のアドレス計算は苦手。
ループはなるべく大きく回す。
パイプラインが無駄になる。
短いサブルーチンは、インライン関数で。
パイプライン対策。
ifの前には、分岐の有無に無関係なステートを置く。
遅延分岐対策。

などなど…

可読性の良し悪しを除いて、
あるアーキテクチャ向に書いたコーディングが、
別のアーキテクチャでは、かえって遅くする原因になる例は、
ご存知ですか?
話が飛びずぎるので、DSPやPICなど、
ノイマン型以外のものはとりあえず除外します。

-- mac





スレッド概略
[4557(R)](起点)
 └[5472(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]