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:53:58 PM 13 */ 14 public final class PostIndexedAddressSource extends IndexedAddressSource { 15 public PostIndexedAddressSource(int baseRegister, Operand offset) { 16 super(baseRegister, offset); 17 } 18 19 public final int getTransferAddress(CPU cpu) { 20 final int address = baseRegister == 15? cpu.getPC() : cpu.R[baseRegister]; 21 22 cpu.R[baseRegister] += offset.getValue(cpu); 23 return address; 24 } 25 26 public void dumpJavaSource(String varName, Writer out) throws IOException { 27 out.write("final int " + varName + " = "); 28 if (baseRegister == 15) { 29 out.write("cpu.getPc();\n"); 30 } else { 31 out.write("R[" + baseRegister + "];\n"); 32 } 33 offset.dumpJavaSource("offset", out); 34 out.write("R[" + baseRegister + "] += offset;\n"); 35 } 36 }