From 04801b6a8f9589855e8f9d8586e033088aa9ed3b Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Sun, 11 Aug 2019 10:13:11 +0200 Subject: [PATCH] Improved addition loops in GUIAm2910RegCntr and GUIinc12 --- .../logic/model/am2900/components/GUIinc12.java | 16 ++-------------- .../components/am2910/GUIAm2910RegCntr.java | 15 ++------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/GUIinc12.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/GUIinc12.java index 0b94583c..cbd1f9f0 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/GUIinc12.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/GUIinc12.java @@ -1,6 +1,5 @@ package net.mograsim.logic.model.am2900.components; -import static net.mograsim.logic.core.types.Bit.ONE; import static net.mograsim.logic.core.types.Bit.U; import static net.mograsim.logic.core.types.Bit.X; import static net.mograsim.logic.core.types.Bit.Z; @@ -51,19 +50,8 @@ public class GUIinc12 extends SimpleRectangularHardcodedGUIComponent for (int i = 11; i >= 0; i--) { Bit a = ABits[i]; - Bit z; - if (a.isBinary() && carry.isBinary()) - { - boolean aBool = a == ONE; - boolean carryBool = carry == ONE; - z = aBool ^ carryBool ? ONE : ZERO; - carry = aBool && carryBool ? ONE : ZERO; - } else - { - carry = carry.join(a); - z = carry; - } - YBits[i] = z; + YBits[i] = a.xor(carry); + carry = a.and(carry); } } readWriteEnds.get("Y").feedSignals(YBits); diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2910/GUIAm2910RegCntr.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2910/GUIAm2910RegCntr.java index baf456a8..ec228c16 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2910/GUIAm2910RegCntr.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2910/GUIAm2910RegCntr.java @@ -63,19 +63,8 @@ public class GUIAm2910RegCntr extends SimpleRectangularHardcodedGUIComponent for (int i = 11; i >= 0; i--) { Bit a = QC[i]; - Bit z; - if (a.isBinary() && carry.isBinary()) - { - boolean aBool = a == ONE; - boolean carryBool = carry == ONE; - z = !aBool ^ carryBool ? ONE : ZERO; - carry = aBool || carryBool ? ONE : ZERO; - } else - { - carry = carry.join(a); - z = carry; - } - QC[i] = z; + QC[i] = a.xnor(carry); + carry = a.or(carry); } } } -- 2.17.1