View Javadoc

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  }