RV32Iの基本命令の加算ADD命令を31回も実施していることになるので、ハード量が増える、
もしくは、時間をかけてソフト的に実行するしかありません。
これを実際にどのくらい時間がかかるのかを見るのは簡単です。M拡張命令の有り/無しで
実行時間を比較すればよいです。
int hoo(int a, int b) {
return a*b;
}
この関数の実行時間を比較してみると、わかりますね(もちろん、関数呼び出しのオーバーヘッドあります)
もちろんデータにも依存するので、データの値も変えて実行してみました。
こちらはEWRISC-Vでコンパイルし、シミュレータ上で確認しました。