Instruction abstract -> interface
This commit is contained in:
		
							parent
							
								
									a05b2fbeee
								
							
						
					
					
						commit
						1bdb35a899
					
				
					 8 changed files with 26 additions and 29 deletions
				
			
		|  | @ -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(); | ||||
| } | ||||
|  |  | |||
|  | @ -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 }; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -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}; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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[] {}; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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}; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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}; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 }; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 }; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus