From 948ed1b11a44ef0244392a68e7f8d425f9003c60 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Fri, 3 Sep 2021 12:18:12 +0200 Subject: [PATCH] [#201] Fix code generator --- .../emustudio/plugins/compiler/ssem/CodeGenerator.java | 4 ++-- .../net/emustudio/plugins/compiler/ssem/RunnerTest.java | 2 +- .../emustudio/plugins/compiler/ssem/SSEMCompilerTest.java | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java index 47dc3b583..b8e7d4a67 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java @@ -26,7 +26,7 @@ public ByteBuffer generateCode(Program program) { } private void writeInstruction(int opcode, long operand) { - int instruction = (int)((operand & 0x1F) | (((opcode & 0x07) << 13))); - code.putInt(NumberUtils.reverseBits(instruction, 32)); + int instruction = NumberUtils.reverseBits((int)operand & 0x1F, 32) | ((opcode & 0x07) << 16); + code.putInt(instruction); } } diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java index b0ef6a85d..413cf6e3b 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java @@ -48,7 +48,7 @@ public void testCommandLine() throws Exception { byte[] expected = new byte[33 * 4]; expected[4] = 0x68; - expected[5] = 0x03; + expected[5] = 0x6; assertArrayEquals(expected, bytes); } diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java index 6f3775052..38e6c5f7d 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java @@ -97,24 +97,24 @@ public void testCopyrightIsKnown() { @Test public void testSTO() throws Exception { compile("00 STO 22\n"); - assertProgram(0x68, 3, 0, 0); + assertProgram(0x68, 0x6, 0, 0); } @Test public void testLDN() throws Exception { compile("00 LDN 29"); - assertProgram(0xB8,2,0,0); + assertProgram(0xB8,0x2,0,0); } @Test public void testSUB() throws Exception { compile("00 SUB 30"); - assertProgram(0x78,4,0,0); + assertProgram(0x78,0x1,0,0); } @Test public void testSTP() throws Exception { compile("00 STP"); - assertProgram(0,7,0,0); + assertProgram(0,0x7,0,0); } }