Untitled
unknown
java
a year ago
2.9 kB
4
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