• ベストアンサー

コンピュータアーキテクチャ

MIPSに即値による減算命令が存在しないのはなぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

即値による加算命令と減算命令の違いは、突き詰めていくとキャリーとボローの扱いが異なるだけです。 MIPSにはキャリーフラグがありませんから、加算命令で減算を代用することに何の問題もありません。

gorforit_1
質問者

お礼

ありがとうございます

その他の回答 (4)

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.4

推測ですが、MIPSのようなRISCだと命令数を減らすため、なんでこれがというような命令が省かれていることがあります。 即値による減算が無くても、直前にレジスタにストアすれば済むという考えとか、汎用レジスタたくさんあるし。 あるいは、減算は加算で代用できるからいいという発想かもしれないですね。 実際問題として、即値演算自体、レジスタ-アキュムレータの演算に比べて特に早くありません。 もう一つの考えとして、コンパイラを使うと、即値はリテラルとしてメモリ上に配置されてしまうということもあるかも。即値演算自体の必要性が高くないのかもしれません。

gorforit_1
質問者

お礼

ありがとうございます

回答No.3

質問者さんは「即値」と断っています。 つまり、ごく小さな値の減算命令をテスト対象としないのはなぜか、ということです。 A-B=A+(-B) と考えれば、Bの符号を変更する時間ぶん遅くなるので、即値の減算はメモリ値による減算でカバーしているコンピュータと思われます。 それとも、即値による減算がないコンピュータですかね? もしかして、これは試験問題の一部ですか。 そうであれば、計測対象命令群から故意に除いたとも考えられます。

gorforit_1
質問者

お礼

ありがとうございます

回答No.2

減算=負数の加算なので、減算される即値を負数にかえれば、加算命令に変換が可能だからだと思います。

gorforit_1
質問者

お礼

ありがとうございます

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

これは想像ですが、即値による加算で代用できるからではないでしょうか。

gorforit_1
質問者

お礼

ありがとうございます

関連するQ&A