シフター命令

シフター(shifter)命令はハードウェア・バレル・シフター・ユニットを使ってシフト演算や正規化演算を行います。

シフター命令の形式

シフター命令はMACやALU命令とは少しばかり様子が異なります。

下の図は基本形式で使うことのできるオペランドの分類を表しています。薄青はxopとして使うことができますが、見てのとおりオペランドとして明示できるのはSIだけです。また、yopはありません。

シフターが使用するレジスタ

オペランドにはSIのほか、dregを使用することができます。dregを使用する形式は直行形式ですので複合命令に使用することはできません。また、シフト命令のシフト量は明示的に即値で指定するか、暗黙的にSE(あるいはSB)で指定します。

倍精度シフト

倍精度のシフトを効率よく行えるよう、シフターは40ビット長になっています。実際には32ビットあれば十分ですが、SRはMAC命令も使用するため40ビットを確保しています。倍精度シフトは16ビット・シフトを2回行うことで実行します。上位の16ビットと下位の16ビットを区別するためにシフト命令のオプションに(LO)あるいは(HI)を指定します。このオプションは必須です。

(HI)オプションを指定すると、シフト命令はSR1レジスタを基準として右あるいは左に値をシフトします(下図)。左シフトであふれたビットはSR2に格納され、右シフトであふれたビットはSR0に格納されます。なお、SR2は8ビットしかないため、格納しきれないビットは単に失われます。

(HI)オプションによるシフト

(LO)オプションを指定すると、シフト命令はSR0レジスタを基準として右あるいは左に値をシフトします(下図)。左シフトであふれたビットはSR1に格納され、右シフトであふれたビットは単に失われます。

(LO)オプションによるシフト

具体的な倍精度シフトの方法は各命令を参照してください。

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |