1 package com.tapina.robe.runtime.instruction;
2
3 import com.tapina.robe.runtime.Condition;
4
5 import java.io.Writer;
6 import java.io.IOException;
7
8 /***
9 * Created by IntelliJ IDEA.
10 * User: gareth
11 * Date: Sep 2, 2003
12 * Time: 9:11:24 AM
13 */
14 public final class MultiplyAccumulateInstruction extends MultiplyInstruction {
15 private final int Rn;
16
17 public MultiplyAccumulateInstruction(Condition condition, int destinationRegister, int addRegister, int factorRegister1, int factorRegister2, boolean setConditionCodes) {
18 super(condition, destinationRegister, factorRegister1, factorRegister2, setConditionCodes);
19 Rn = addRegister;
20 }
21
22 final void calculate(int[] R) {
23 super.calculate(R);
24 R[Rd] += R[Rn];
25 }
26
27 public void dumpJavaSourceUnconditional(Writer out) throws IOException {
28 if (Rd != 15) {
29 out.write("R[" + Rd + "] = (R[" + Rm + "] * R[" + Rs + "]) + R[" + Rn + "];\n");
30 if (setConditionCodes) {
31 out.write("Operator.setZNFlags(R[" + Rd + "], cpu);\n");
32 }
33 }
34 }
35 }