From a26207ae23a5aea9dc04737b3f0809d62fedc497 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Loosen Date: Sun, 26 Oct 2025 00:55:37 +0200 Subject: [PATCH] Fix ggt and write tests --- Project-01/uap25-pro01-tram/jar/tram.jar | Bin 3950081 -> 3951609 bytes .../st/uap/w25/tram/AbstractMachine.java | 103 +++++++--------- .../st/uap/w25/tram/AbstractMachineTests.java | 116 ++++++++++++++---- Project-01/uap25-pro01-tram/tramcode/ggt.tram | 30 +++-- Project-01/uap25-pro01-tram/tramcode/mod.tram | 5 +- 5 files changed, 156 insertions(+), 98 deletions(-) diff --git a/Project-01/uap25-pro01-tram/jar/tram.jar b/Project-01/uap25-pro01-tram/jar/tram.jar index ca34862c6f2b8c906d968490997f6638f9584ef2..9261f40227759dd034c2e88439519b5ced5802b0 100644 GIT binary patch delta 60258 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

^Yrnsbb^q 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 z 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 RsfN|CS|$_YrUwkf+y8AUvx5Kt delta 59198 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 E051)1 gtB ? 1 : 0); + int gtA = read(this.TOP - 1); + int gtB = read(this.TOP); + write(this.TOP - 1, gtA > gtB ? 1 : 0); this.TOP -= 1; this.PC += 1; break; case Instruction.EQ: // Pg. 12 - int eqA = stack.get(this.TOP - 1); - int eqB = stack.get(this.TOP); - this.stack.set(this.TOP - 1, eqA == eqB ? 1 : 0); + int eqA = read(this.TOP - 1); + int eqB = read(this.TOP); + write(this.TOP - 1, eqA == eqB ? 1 : 0); this.TOP -= 1; this.PC += 1; break; case Instruction.NEQ: // Pg. 12 - int neqA = stack.get(this.TOP - 1); - int neqB = stack.get(this.TOP); - this.stack.set(this.TOP - 1, neqA != neqB ? 1 : 0); + int neqA = read(this.TOP - 1); + int neqB = read(this.TOP); + write(this.TOP - 1, neqA != neqB ? 1 : 0); this.TOP -= 1; this.PC += 1; break; case Instruction.IFZERO: // Pg. 13 - if (this.stack.get(this.TOP) == 0) { + if (read(this.TOP) == 0) { this.PC = arg1; } else { this.PC += 1; @@ -155,11 +154,11 @@ public class AbstractMachine { break; case Instruction.INVOKE: // Pg. 23 - this.stack.set(this.TOP + 1, this.PC + 1); - this.stack.set(this.TOP + 2, this.PP); - this.stack.set(this.TOP + 3, this.FP); - this.stack.set(this.TOP + 4, spp(arg3, this.PP, this.FP)); - this.stack.set(this.TOP + 5, sfp(arg3, this.PP, this.FP)); + write(this.TOP + 1, this.PC + 1); + write(this.TOP + 2, this.PP); + write(this.TOP + 3, this.FP); + write(this.TOP + 4, spp(arg3, this.PP, this.FP)); + write(this.TOP + 5, sfp(arg3, this.PP, this.FP)); this.PP = this.TOP - arg1 + 1; this.FP = this.TOP + 1; this.TOP += 5; @@ -167,12 +166,12 @@ public class AbstractMachine { break; case Instruction.RETURN: // Pg. 24 - int res = this.stack.get(this.TOP); + int res = read(this.TOP); this.TOP = this.PP; - this.PC = this.stack.get(this.FP); - this.PP = this.stack.get(this.FP + 1); - this.FP = this.stack.get(this.FP + 2); - this.stack.set(this.TOP, res); + this.PC = read(this.FP); + this.PP = read(this.FP + 1); + this.FP = read(this.FP + 2); + write(this.TOP, res); break; case Instruction.POP: // Not in docs, see MaMa @@ -211,23 +210,6 @@ public class AbstractMachine { return sfp(d-1, this.stack.get(fp+3), this.stack.get(fp+4)); } - // Called before each instruction - protected void ensureCapacity(int currSize) { - int size = stack.size(); - - // Always ensure a minimum working capacity of 16 - if (size < 16) { - for (int i = size; i < 16; i++) stack.add(0); - size = 16; - } - - // Double list capacity when fewer than 8 free slots remain - if (currSize >= size - 8) { - int newSize = size * 2; - for (int i = size; i < newSize; i++) stack.add(0); - } - } - // Returns the machine's current configuration as string public String confStr() { StringBuilder sb = new StringBuilder(); @@ -266,4 +248,13 @@ public class AbstractMachine { } return result; } + + protected void write(int index, int value) { + while (stack.size() <= index) stack.add(0); + stack.set(index, value); + } + + protected int read(int index) { + return stack.get(index); + } } diff --git a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachineTests.java b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachineTests.java index 8747397..4650aaa 100644 --- a/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachineTests.java +++ b/Project-01/uap25-pro01-tram/src/de/unitrier/st/uap/w25/tram/AbstractMachineTests.java @@ -2,8 +2,6 @@ package de.unitrier.st.uap.w25.tram; import org.junit.jupiter.api.Test; -import java.util.ArrayList; - import static org.junit.jupiter.api.Assertions.*; public class AbstractMachineTests { @@ -75,29 +73,7 @@ public class AbstractMachineTests { } @Test - void testGGTx48y18() { - Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); - AbstractMachine tram = new AbstractMachine(code, new Integer[]{48, 18}); - tram.execute(); - - assertTrue(tram.isHalted(), "Machine should halt."); - int result = tram.result(); - assertEquals(6, result, "Expected ggt(48,18) = 6."); - } - - @Test - void testGGTx270y192() { - Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); - AbstractMachine tram = new AbstractMachine(code, new Integer[]{270, 192}); - tram.execute(); - - assertTrue(tram.isHalted(), "Machine should halt."); - int result = tram.result(); - assertEquals(6, result, "Expected ggt(270,192) = 6."); - } - - @Test - void testModPositive() { + void testMODx5y2() { Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram"); AbstractMachine tram = new AbstractMachine(code, new Integer[]{17, 5}); tram.execute(); @@ -108,7 +84,7 @@ public class AbstractMachineTests { } @Test - void testModExactDivision() { + void testMODx20y5() { Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram"); AbstractMachine tram = new AbstractMachine(code, new Integer[]{20, 5}); tram.execute(); @@ -119,7 +95,7 @@ public class AbstractMachineTests { } @Test - void testModSmallerDividend() { + void testMODx3y10() { Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram"); AbstractMachine tram = new AbstractMachine(code, new Integer[]{3, 10}); tram.execute(); @@ -129,6 +105,16 @@ public class AbstractMachineTests { assertEquals(3, result, "Expected 3 mod 10 = 3."); } + @Test + void testMODx37y16() { + Instruction[] code = Assembler.readTRAMCode("tramcode/mod.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{37,16}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(5, result, "Expected 37 mod 16 = 5."); + } @Test void testGGTx17y5() { @@ -163,4 +149,80 @@ public class AbstractMachineTests { assertEquals(25, result, "Expected ggt(0,25) = 25."); } + @Test + void testGGTx270y192() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{270, 192}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(6, result, "Expected ggt(270,192) = 6."); + } + + @Test + void testGGTx48y18() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{48, 18}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(6, result, "Expected ggt(48,18) = 6."); + } + + @Test + void testGGTx3y9() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{3,9}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(3, result, "Expected ggt(48,18) = 6."); + } + + @Test + void testGGTx9y3() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{9,3}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(3, result, "Expected ggt(48,18) = 6."); + } + + @Test + void testGGTx24y4() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{24,4}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(4, result, "Expected ggt(48,18) = 6."); + } + + @Test + void testGGTx16y37() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{16,37}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(1, result, "Expected ggt(16,37) = 1."); + } + + @Test + void testGGTx37y16() { + Instruction[] code = Assembler.readTRAMCode("tramcode/ggt.tram"); + AbstractMachine tram = new AbstractMachine(code, new Integer[]{37,16}); + tram.execute(); + + assertTrue(tram.isHalted(), "Machine should halt."); + int result = tram.result(); + assertEquals(1, result, "Expected ggt(37,16) = 1."); + } } diff --git a/Project-01/uap25-pro01-tram/tramcode/ggt.tram b/Project-01/uap25-pro01-tram/tramcode/ggt.tram index 95e6d95..f157eac 100644 --- a/Project-01/uap25-pro01-tram/tramcode/ggt.tram +++ b/Project-01/uap25-pro01-tram/tramcode/ggt.tram @@ -1,22 +1,26 @@ // Quellkode: ggt(a,b) { if (b==0) then a else ggt(b, a mod b) } // Annahmen: Die Argumente a und b werden durch Kellerzellen 0 und 1 repräsentiert, // sowie PP=0, FP=0 und TOP=-1 -INVOKE 2 LGGT 0 -POP +INVOKE 2 GGT 0 HALT -LGGT: -// b +GGT: LOAD 1 0 +IFZERO RET LOAD 1 0 -// if b != 0 -> 1 -IFZERO 1 -// return a -LOAD 0 0 -RETURN -L1: -LOAD 1 0 // b LOAD 0 0 LOAD 1 0 -MOD // a mod b -INVOKE 2 LGGT 0 // ggt(b, a mod b) +INVOKE 2 MOD 1 +INVOKE 2 GGT 0 RETURN + +RET: LOAD 0 0 +RETURN + +MOD: LOAD 0 0 +LOAD 1 0 +LOAD 0 0 +LOAD 1 0 +DIV +MUL +SUB +RETURN \ No newline at end of file diff --git a/Project-01/uap25-pro01-tram/tramcode/mod.tram b/Project-01/uap25-pro01-tram/tramcode/mod.tram index 1dbf814..7ec4c8b 100644 --- a/Project-01/uap25-pro01-tram/tramcode/mod.tram +++ b/Project-01/uap25-pro01-tram/tramcode/mod.tram @@ -3,10 +3,11 @@ INVOKE 2 MOD 0 HALT -MOD: LOAD 1 0 +MOD: LOAD 0 0 +LOAD 1 0 +LOAD 0 0 LOAD 1 0 DIV -LOAD 2 0 MUL SUB RETURN