Section courante

A propos

Section administrative du site

Assembleur SuperH

DMULS.L

SuperH Double-Length Multiply as Signed

Syntaxe

DMULS.L Rm,Rn

Description

Cette instruction permet d'effectuer un traitement de multiplication entière (signé) de contenu d'un registre général avec un autre registre général et entrepose le résultat 64 bits dans les registres MACL et MACH.

Algorithme

MODULE DMULS(m,n) * DMULS.L Rm,Rn
   tempn ← (long)R[n]
   tempm ← (long)R[m]
   SI tempn < 0 ALORS
      tempn ← 0 - tempn
   FIN SI
   SI tempm < 0 ALORS
      tempm ← 0 - tempm
   FIN SI
   SI (long)(R[n] ^ R[m] < 0 ALORS
      fnLmL ← -1
   SINON
      fnLmL ← 0
   FIN SI
   temp1 ← (unsigned long)tempn
   temp2 ← (unsigned long)tempm
   RnL ← temp1 ∩ 0000FFFFh
   RnH ← (temp1 >> 16) ∩ 0000FFFFh
   RmL ← temp2 ∩ 0000FFFFh
   RmH ← (temp2 >> 16) ∩ 0000FFFFh
   temp0 ← RmL x RnL
   temp1 ← RmH x RnL
   temp2 ← RmL x RnH
   temp3 ← RmH x RnH
   Res2 ← 0
   Res1 ← temp1 + temp2
   SI Res1 < temp1 ALORS
      Res2 ← Res2 + 00010000h
   FIN SI
   temp1 ← (Res1 << 16) ∩ 0FFFF0000h
   Res0 ← temp0 + temp1
   SI Res0 < temp0 ALORS
      Res2 ← Res2 + 1
   FIN SI
   Res2 ← Res2 + ((Res1 >> 16) ∩ 0000FFFFh) + temp3
   SI fnLmL < 0 ALORS
      Res2 ← ~ Res2
      SI Res0 = 0 ALORS
         Res2 ← Res2 + 1
      SINON
         Res0 ← (~ Res0) + 1
      FIN SI
   FIN SI
   MACH ← Res2
   MACL ← Res0
   PC ← PC + 2

Mnémonique

Instruction Abstrait Opcode Cycle
DMULS.L Rm, Rn Avec signe, MACH, MACL ← Rn × Rm 0011nnnnmmmm1101 2 à 4


Dernière mise à jour : Mardi, le 28 juillet 2015