| MULX 算術演算命令 <<L1R>>,<<L1>>,<<L2>> |
【ニモニックとオペランド】
【機能】
Multiply unsigned with extended precision
多倍長符号なし乗算
【オプション】
なし
【命令フォーマットと表記法】
【解説】
srcとdestを乗算し、結果の下位32ビットをdestに、上位32ビットをextに入れます。
演算は符号なしで行われます。
この命令では、積が2倍長で得られるため、積の上位ビットを入れるレジスタextを指定する必要があります。オペランドのサイズは32ビットに固定です。
destとextに同じレジスタを指定すると、dest値(積の下位ビット)が設定されます。
destの内容が0ですので、Z_flagがセットされます。
R1(ext)の内容が0ではないので、F_flagはクリアされます。
ADDXやSUBXとは違い、MULXとDIVXでは、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に格納します。