/ / 最新

swk's log - MIPS のシフト命令

2007-09-07

* MIPS のシフト命令 [tech]

MIPS の演算命令って,

  • レジスタ-レジスタ間の and に対してレジスタ-即値間は andi
  • 同じく or に対して ori
  • 同じく add に対して addi
  • (略

てな風に,即値を使う命令は後ろに i がつくの場合がほとんどなのだけど,なぜかシフト命令だけはそうなっていません.これってどういう経緯でこうなったんでしょう?

例えば左論理シフトの場合,シフト量を即値で指定する命令が sll (shift left logical) で,シフト量をレジスタで指定する命令が sllv (shift left logical variable) となっています.

歴史的事情なのかなあとも思ったのだけど (sllv とかが後から追加されたとか),命令のビットエンコーディングを見てもあまりそうは思えないし,少なくとも Hennessy らの 1982 年の論文の時点で既にバレルシフタは用意されていたようです.

いや,単に名前の話なのでどうでもいいのですが,授業で扱うときにちょっと面倒です (エンコーディングの説明も面倒).

(参考)

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org