Untitled
unknown
java
10 months ago
2.9 kB
2
Indexable
Instructions.java // Interface package org.opcode.service; import org.opcode.model.Register; import java.util.Map; public interface Instruction { void execute(Map<Character, Register> registerMap); } opcodeimpl.java package org.opcode.service; import org.opcode.model.Register; import java.util.Map; public class SetInstruction implements Instruction { private final char register; private final int value; public SetInstruction(char register, int value) { this.register = register; this.value = value; } @Override public void execute(Map<Character, Register> registerMap) { registerMap.get(register).setValue(value); } } public class AddInstruction implements Instruction { private final char register; private final int value; public AddInstruction(char register, int value) { this.register = register; this.value = value; } @Override public void execute(Map<Character, Register> registerMap) { Register reg = registerMap.get(register); reg.setValue(reg.getValue() + value); } } public class AdrInstruction implements Instruction { private final char dest; private final char src; public AdrInstruction(char dest, char src) { this.dest = dest; this.src = src; } @Override public void execute(Map<Character, Register> registerMap) { Register regDest = registerMap.get(dest); Register regSrc = registerMap.get(src); regDest.setValue(regDest.getValue() + regSrc.getValue()); } } public class MovInstruction implements Instruction { private final char dest; private final char src; public MovInstruction(char dest, char src) { this.dest = dest; this.src = src; } @Override public void execute(Map<Character, Register> registerMap) { Register regSrc = registerMap.get(src); registerMap.get(dest).setValue(regSrc.getValue()); } } public class InrInstruction implements Instruction { private final char register; public InrInstruction(char register) { this.register = register; } @Override public void execute(Map<Character, Register> registerMap) { Register reg = registerMap.get(register); reg.setValue(reg.getValue() + 1); } } public class DcrInstruction implements Instruction { private final char register; public DcrInstruction(char register) { this.register = register; } @Override public void execute(Map<Character, Register> registerMap) { Register reg = registerMap.get(register); reg.setValue(reg.getValue() - 1); } } public class RstInstruction implements Instruction { @Override public void execute(Map<Character, Register> registerMap) { for (Register register : registerMap.values()) { register.setValue(0); } } }
Editor is loading...
Leave a Comment