Assembleur SuperH | MAC.W |
---|---|
SuperH | Multiply and Accumulate Calculation Word |
Syntaxe
MAC.W @Rm+,@Rn+ |
MAC @Rm+,@Rn+ |
Description
Cette instruction permet d'effectuer une multiplication entière (signé) d'opérandes 16 bits en utilisant le contenu d'un registre général et d'un registre d'adresse.
Algorithme
MODULE MACW(m,n) * MAC.W @Rm+,@Rn+ tempn ← (long)Read_Word(R[n]) R[n] ← R[n] + 2 tempm ← (long)Read_Word(R[m]) R[m] ← R[m] + 2 templ ← MACL tempm ← ((long)(short)tempn x (long)(short)tempm) SI (long)MACL ≥ 0 ALORS dest ← 0 SINON dest ← 1 FIN SI SI (long)tempm ≥ 0 ALORS src ← 0 tempn ← 0 SINON src ← 1 tempn ← FFFFFFFFh FIN SI src ← src + dest MACL ← MACL + tempm SI (long)MACL ≥ 0 ALORS ans ← 0 SINON ans ← 1 FIN SI ans ← ans + dest SI S = 1 ALORS SI ans = 1 ALORS SI src = 0 OU src = 2 ALORS MACH ← MACH U 00000001h FIN SI SI src = 0 ALORS MACL ← 7FFFFFFFh FIN SI SI src = 2 ALORS MACL ← 80000000h FIN SI FIN SI SINON MACH ← MACH + tempn SI templ > MACL ALORS MACH ← MACH + 1 FIN SI SI MACH ∩ 00000200h = 0 ALORS MACH ← MACH ∩ 000003FFh SINON MACH ← MACH U FFFFFC00h FIN SI FIN SI PC ← PC + 2 |
Mnémonique
Instruction | Abstrait | Opcode | Cycle |
---|---|---|---|
MAC.W @Rm+, @Rn+ | Avec signe, MAC ← (Rn) × (Rm) + MAC | 0100nnnnmmmm1111 | 3/(2) |
MAC @Rm+, @Rn+ |
Dernière mise à jour : Mardi, le 28 juillet 2015