行く記憶の流れは絶えずして

戻ってこないのでメモするところ

仕事の話

組み込みのC言語で処理負荷の話になったので。

a、sumはint型。

[c]

for(i=0;i<4;i++){

sum += a[i];

}

[/c]

よりも、

[c]

i=4;

p_a=a;

while(i--){

sum += *p_a++;

}

[/c]

のほうが命令数が少ない。

ポイントは

  • 前者はaを進めるための隠れレジスタを持っている。aはint型なので隠れレジスタは+4(職場の環境でのint型のサイズ)ずつ増える
  • 後者はi--でデクリメントと判定を1命令でできる命令が用意されている(前者はインクリメントと比較の2命令)

処理負荷と見やすさはトレードオフだし処理負荷の世界ではまだ序の口だし、難しいところ。