Instruction abstract -> interface

This commit is contained in:
Imbus 2024-04-21 22:17:49 +02:00
parent a05b2fbeee
commit 1bdb35a899
8 changed files with 26 additions and 29 deletions

View file

@ -1,11 +1,8 @@
package hatelace;
public abstract class Instruction {
public abstract void execute(Memory memory, ProgramCounter pc);
protected abstract String opcode();
protected abstract Object[] operands();
public abstract String toString();
public interface Instruction {
void execute(Memory memory, ProgramCounter pc);
String opcode();
Object[] operands();
String toString();
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Add extends Instruction {
public class Add implements Instruction {
private Address src;
private Word imm;
private Address dest;
@ -19,7 +19,7 @@ public class Add extends Instruction {
PC.incPC();
}
protected String opcode() {
public String opcode() {
return "ADD";
}
@ -27,7 +27,7 @@ public class Add extends Instruction {
return String.format("%s [%s] %s [%s]", this.opcode(), this.src, this.imm, this.dest);
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] { this.src, this.imm, this.dest };
}
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Copy extends Instruction {
public class Copy implements Instruction {
private Word imm;
private Address dest;
@ -17,11 +17,11 @@ public class Copy extends Instruction {
PC.incPC();
}
protected String opcode() {
public String opcode() {
return "CPY";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] {this.imm, this.dest};
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Halt extends Instruction {
public class Halt implements Instruction {
/** Halts the CPU */
public Halt(){};
@ -10,11 +10,11 @@ public class Halt extends Instruction {
PC.halt();
}
protected String opcode() {
public String opcode() {
return "HLT";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] {};
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Jump extends Instruction {
public class Jump implements Instruction {
private int index;
/** Unconditional jump, non-relative */
@ -14,11 +14,11 @@ public class Jump extends Instruction {
PC.setPC(this.index);
}
protected String opcode() {
public String opcode() {
return "JMP";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] {this.index};
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class JumpEq extends Instruction {
public class JumpEq implements Instruction {
private int index;
private Address src;
private Word imm;
@ -22,11 +22,11 @@ public class JumpEq extends Instruction {
}
}
protected String opcode() {
public String opcode() {
return "JEQ";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] {this.index, this.src, this.imm};
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Mul extends Instruction {
public class Mul implements Instruction {
private Address src1;
private Address src2;
private Address dest;
@ -19,11 +19,11 @@ public class Mul extends Instruction {
PC.incPC();
}
protected String opcode() {
public String opcode() {
return "MUL";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] { this.src1, this.src2, this.dest };
}

View file

@ -2,7 +2,7 @@ package hatelace.instructions;
import hatelace.*;
public class Print extends Instruction {
public class Print implements Instruction {
private Address address;
/** Print content of memory address */
@ -15,11 +15,11 @@ public class Print extends Instruction {
PC.incPC();
}
protected String opcode() {
public String opcode() {
return "PRT";
}
protected Object[] operands() {
public Object[] operands() {
return new Object[] { this.address };
}