From 1b45d6a0f9d6035ae16e712a2f0658f1654086f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Dobrovoljc?= Date: Tue, 3 Jun 2025 17:04:14 +0200 Subject: [PATCH] Final --- src/pins25/phase/CodeGen.java | 6 ++---- src/pins25/phase/Machine.java | 4 ++-- src/pins25/phase/Memory.java | 23 ++++++++--------------- zip.sh | 5 +++-- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/pins25/phase/CodeGen.java b/src/pins25/phase/CodeGen.java index b9ded52..0df12ac 100644 --- a/src/pins25/phase/CodeGen.java +++ b/src/pins25/phase/CodeGen.java @@ -414,10 +414,8 @@ public class CodeGen { case Mem.RelAccess relAccess -> { String initLabel = "$init:" + varDef.name + "@" + loc.location().begLine() + ":" + loc.location().begColumn(); data.add(new PDM.LABEL(initLabel, loc)); - if (relAccess.inits != null) { - for (Integer init : relAccess.inits) { - data.add(new PDM.DATA(init, loc)); - } + for (Integer init : relAccess.inits) { + data.add(new PDM.DATA(init, loc)); } code.add(new PDM.PUSH(-relAccess.size, loc)); diff --git a/src/pins25/phase/Machine.java b/src/pins25/phase/Machine.java index 413cbaf..8e0a3c8 100644 --- a/src/pins25/phase/Machine.java +++ b/src/pins25/phase/Machine.java @@ -28,12 +28,12 @@ public class Machine { /** * Ali se opravi testni izpis ukazov. */ - public static boolean debugInstrsList = true; + public static boolean debugInstrsList = false; /** * Ali se opravi testni izpis vrednost oznak. */ - public static boolean debugLabelsList = true; + public static boolean debugLabelsList = false; /** * Ali se opravi testni izpis dogajanja na skladu. diff --git a/src/pins25/phase/Memory.java b/src/pins25/phase/Memory.java index ce65e47..49ede40 100644 --- a/src/pins25/phase/Memory.java +++ b/src/pins25/phase/Memory.java @@ -230,7 +230,7 @@ public class Memory { int parOffset = 4; // +SL Vector debugPars = new Vector<>(); for (AST.ParDef parDef : funDef.pars) { - Mem.RelAccess access = new Mem.RelAccess(parOffset, frameBuilder.depth, 4, null, parDef.name); + Mem.RelAccess access = new Mem.RelAccess(parOffset, frameBuilder.depth, 4, new Vector<>(), parDef.name); parOffset += access.size; debugPars.add(access); attrAST.attrParAccess.put(parDef, access); @@ -285,7 +285,6 @@ public class Memory { if (varDef.inits.size() == 0) { size = 4; - inits = null; } if (frameBuilder == null) { @@ -329,17 +328,12 @@ public class Memory { public static Integer decodeChrConst(final AST.AtomExpr chrAtomExpr, final Report.Locatable loc) { switch (chrAtomExpr.value.charAt(1)) { case '\\': - switch (chrAtomExpr.value.charAt(2)) { - case 'n': - return 10; - case '\'': - return ((int) '\''); - case '\\': - return ((int) '\\'); - default: - return 16 * (((int) chrAtomExpr.value.charAt(2)) - ((int) '0')) - + (((int) chrAtomExpr.value.charAt(3)) - ((int) '0')); - } + return switch (chrAtomExpr.value.charAt(2)) { + case 'n' -> 10; + case '\'' -> ((int) '\''); + case '\\' -> ((int) '\\'); + default -> Integer.parseInt(chrAtomExpr.value.substring(2, 4), 16); + }; default: return ((int) chrAtomExpr.value.charAt(1)); } @@ -371,8 +365,7 @@ public class Memory { c += 1; break; default: - value.addLast(16 * (((int) strAtomExpr.value.charAt(c + 1)) - ((int) '0')) - + (((int) strAtomExpr.value.charAt(c + 2)) - ((int) '0'))); + value.addLast(Integer.parseInt(strAtomExpr.value.substring(c + 1, c + 3), 16)); c += 2; break; } diff --git a/zip.sh b/zip.sh index efa993a..21693d4 100755 --- a/zip.sh +++ b/zip.sh @@ -6,8 +6,9 @@ read -r phase mkdir pins25 rsync -av --exclude=".*" ./src ./pins25 mkdir ./pins25/prg -cp ./prg/Makefile ./pins25/prg -rm ./pins25/prg/*.pins25 +#cp ./prg/Makefile ./pins25/prg +#rm ./pins25/prg/*.pins25 +cp -r ./prg ./pins25 rm 63230048-"$phase".zip zip -r 63230048-"$phase".zip ./pins25 rm -rf ./pins25