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