これは非常に新しいMIPSコーダーの非常に一般的な質問ですが、CからMIPSへコードを変換する場合、命令カウントは実装に基づいて変化するのですか、それとも常に同じですか?例えば、私はそれを見つけるために、式を使用:MIPS命令のカウントは実装によって変更されますか?
for(i=0; i<a; i++)
for(j=0; j<b; j++)
D[4*j] = i+j;
私の命令数は、(4 * A)+(8 * A * B)4。しかし、それは実際にコードを書いた方法に応じて変わるだろうか?ありがとう!
ここでの「コード」とは、Cコード(どのように書いても問題ありませんが、コンパイラが何をするかが重要です)またはアセンブリです(明らかに別のことを書いて、結果が異なります)。 – harold
コードによって、私はアセンブリを意味しますが、特にisaとコンパイラによって決定される命令カウントの定義を参照しています。そして、基本的には、命令数を変更する方法があるかどうかを尋ねていました。IEのコードはさまざまな方法で作成されていました。したがって、命令が少なくなったり、同じ数の命令を実行したければ、さらに時間をかけてください。 – SN44
シングル命令レベルでも、別の命令で同じ結果。 2で割り切れる値は、DIVまたはビットを右にシフトすることによって行うことができ、値の結果は同じです(ただし、シフトは余りを生成しません)。 Cでは、大きな違いを見るための簡単な方法は、単に "デバッグ"ビルド対 "最適化"ビルドのマシンコードをチェックすることです。アセンブリーでは、プログラマーはより多くの制御を行います。通常、アセンブリーはほとんどがinstの1:1マッピングであるため、コンパイル後のマシンコードは何かをソースから判断することができます。オペコードを機械化するニーモニック(疑似instを除く)。 – Ped7g