第二部 トロン仕様チップ命令詳細第四章 算術演算命令
MULX
算術演算命令 <<L1R>>,<<L1>>,<<L2>>

【ニモニックとオペランド】

MULX src, dest, ext

【機能】

Multiply unsigned with extended precision
多倍長符号なし乗算

【オプション】

なし

【命令フォーマットと表記法】

【解説】

 srcdestを乗算し、結果の下位32ビットをdestに、上位32ビットをextに入れます。
演算は符号なしで行われます。
この命令では、積が2倍長で得られるため、積の上位ビットを入れるレジスタextを指定する必要があります。オペランドのサイズは32ビットに固定です。
destとextに同じレジスタを指定すると、dest値(積の下位ビット)が設定されます。

 destの内容が0ですので、Z_flagがセットされます。
 R1(ext)の内容が0ではないので、F_flagはクリアされます。
 ADDXSUBXとは違い、MULXDIVXでは、dest = 0のときZ_flagは、命令実行前のZ_flagの値を累積しませんので注意して下さい。


【フラグ変化】

【発生EIT】

RIE  src [Gen/ru], dest [Gen/mu]のアドレッシングモード違反
RIE s = 1
 
 

【使用例】



 汎用レジスタR13の値(H'ffff1000)を16ビット長の数値D'8に加算し、その結果(H'ffff1008)を4バイトのメモリ参照のアドレスとして使用します。汎用レジスタR0の値(H'00001234)にメモリ参照で得られた32ビットの値を乗じます。乗算で得られた64ビットの値の上位32ビット(H'00000141)を汎用レジスタR1に格納し、下位32ビット(H'aef00000)をR0に格納します。