前の日 / 次の日 / 最新

swk's log

2007-09-07 Fri

* MIPS のシフト命令 [tech]

MIPS の演算命令って,

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

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

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

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

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

(参考)

<< 2007-09 >>
SuMoTuWeThFrSa
1
2345678
9101112131415
16171819202122
23242526272829
30

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-02-13 02:02


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