From 04d51e1f1fd7f1e0f12674a543b06c1cc9352ea7 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 11 Nov 2017 20:14:13 -0500 Subject: [PATCH] Added XCHG Instruction #5. Placeholder class for LEA #1 --- .../src/net/simon987/server/assembly/CPU.java | 1 + .../assembly/instruction/LeaInstruction.java | 14 ++++++++ .../assembly/instruction/XchgInstruction.java | 33 ++++++++++++++++++ plugins/Cubot.jar | Bin 19013 -> 19018 bytes 4 files changed, 48 insertions(+) create mode 100644 Server/src/net/simon987/server/assembly/instruction/LeaInstruction.java create mode 100644 Server/src/net/simon987/server/assembly/instruction/XchgInstruction.java diff --git a/Server/src/net/simon987/server/assembly/CPU.java b/Server/src/net/simon987/server/assembly/CPU.java index 06808f2..da5778a 100755 --- a/Server/src/net/simon987/server/assembly/CPU.java +++ b/Server/src/net/simon987/server/assembly/CPU.java @@ -93,6 +93,7 @@ public class CPU implements JSONSerialisable{ instructionSet.add(new JsInstruction(this)); instructionSet.add(new HwiInstruction(this)); instructionSet.add(new HwqInstruction(this)); + instructionSet.add(new XchgInstruction(this)); status = new Status(); memory = new Memory(config.getInt("memory_size")); diff --git a/Server/src/net/simon987/server/assembly/instruction/LeaInstruction.java b/Server/src/net/simon987/server/assembly/instruction/LeaInstruction.java new file mode 100644 index 0000000..b18bd2e --- /dev/null +++ b/Server/src/net/simon987/server/assembly/instruction/LeaInstruction.java @@ -0,0 +1,14 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.Instruction; + +public class LeaInstruction extends Instruction { + + public static final int OPCODE = 30; + + public LeaInstruction() { + super("lea", OPCODE); + } + + +} diff --git a/Server/src/net/simon987/server/assembly/instruction/XchgInstruction.java b/Server/src/net/simon987/server/assembly/instruction/XchgInstruction.java new file mode 100644 index 0000000..29b875b --- /dev/null +++ b/Server/src/net/simon987/server/assembly/instruction/XchgInstruction.java @@ -0,0 +1,33 @@ +package net.simon987.server.assembly.instruction; + +import net.simon987.server.assembly.CPU; +import net.simon987.server.assembly.Instruction; +import net.simon987.server.assembly.Status; +import net.simon987.server.assembly.Target; + + +/** + * Swap operands. Does not alter the flags + */ +public class XchgInstruction extends Instruction { + + public static final int OPCODE = 31; + + private CPU cpu; + + public XchgInstruction(CPU cpu) { + super("xchg", OPCODE); + + this.cpu = cpu; + } + + @Override + public Status execute(Target dst, int dstIndex, Target src, int srcIndex, Status status) { + + int tmp = dst.get(dstIndex); + dst.set(dstIndex, src.get(srcIndex)); + src.set(srcIndex, tmp); + + return status; + } +} diff --git a/plugins/Cubot.jar b/plugins/Cubot.jar index b6ea07674e2a2120018c46b262e50f982f9e9368..2810bdf3b8643c9990c07541629cd6b903ad2896 100644 GIT binary patch delta 3024 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 SNj3pElN(AT2Dd~20001#F}+m) delta 3022 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 Q0W*^zN+brdL;wH)04cQ2hyVZp