View Javadoc

1   package com.tapina.robe.runtime.instruction;
2   
3   import com.tapina.robe.runtime.CPU;
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: 4:55:29 PM
13   */
14  public final class AutoPreIndexedAddressSource extends PreIndexedAddressSource {
15      public AutoPreIndexedAddressSource(int baseRegister, Operand offset) {
16          super(baseRegister, offset);
17      }
18  
19      public final int getTransferAddress(CPU cpu) {
20          final int address = super.getTransferAddress(cpu);
21          if (baseRegister != 15) {
22              cpu.R[baseRegister] = address;
23          } else {
24              cpu.setPC(address);
25          }
26          return address;
27      }
28  
29      public void dumpJavaSource(String varName, Writer out) throws IOException {
30          offset.dumpJavaSource("offset", out);
31          out.write("final int " + varName + " = ");
32          if (baseRegister == 15) {
33              out.write("cpu.getPC()");
34          } else {
35              out.write("R[" + baseRegister + "]");
36          }
37          out.write(" + offset;\n");
38          if (baseRegister != 15) {
39              out.write("R[" + baseRegister + "] = " + varName + ";\n");
40          } else {
41              out.write("cpu.setPC(" + varName + ");\n");
42          }
43      }
44  }