丸め

命令形式

          // 基本形式
[ IF <cond> ] <dst> = <dst> (RND);

          // 基本形式
MR = MR (RND);
SR = SR (RND);

説明

アキュームレーターの内容を丸めます。

丸められるのはMR0(SR0)です。MR0(SR0)の値によってMR1(SR1)への影響が変わります。

MR0(SR0) < 0x8000のとき
この場合、MR1(SR1)は変化しません。つまりMR0(SR0)の値は切り捨てられます。
0x8000>MR0(SR0)のとき
この場合、MR1(SR1)の値は1だけ増えます。MR0(SR0)の値は切り上げられます。
MR0(SR0)=0x8000かつ、MR0(SR1)が偶数のとき
この場合、MR1(SR1)は変化しません。つまりMR0(SR0)の値は切り捨てられます。
MR0(SR0)=0x8000かつ、MR0(SR1)が奇数のとき
この場合、MR1(SR1)は1だけ増えます。MR0(SR0)の値は切り上げられます。

MR0(SR0)がちょうど中間値の場合、丸める方向が二つあることに注意してください。この方法は丸めによる統計的な誤差が最小になる方法で、偶数丸め、あるいは最近偶数値への丸めと呼ばれます。10進数で言うところのJIS丸めと同じ考え方です。

なお、この命令は積和命令の<yop>が0であり、オプションが(RND)である場合の省略形です。

文法要素

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