From: adam Date: Mon, 20 Aug 2007 07:28:58 +0000 (+0100) Subject: fixed bug in InstructionEncoder X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=854891e5bcb8f20b09f83f58ae5ce91256da9dd2;p=fleet.git fixed bug in InstructionEncoder --- diff --git a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java index 861ea0e..c72c4fe 100644 --- a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java +++ b/src/edu/berkeley/fleet/ies44/InstructionEncoder.java @@ -2,7 +2,7 @@ package edu.berkeley.fleet.ies44; import edu.berkeley.fleet.api.*; import edu.berkeley.fleet.*; import java.io.*; -import static edu.berkeley.fleet.ies44.BitManipulations; +import static edu.berkeley.fleet.ies44.BitManipulations.*; public abstract class InstructionEncoder { @@ -13,9 +13,9 @@ public abstract class InstructionEncoder { public static final int WIDTH_COUNT = 7; public static final int OFFSET_RQ = 0; - public static final int OFFSET_COUNT = 1; - public static final int OFFSET_DEST = OFFSET_COUNT+WIDTH_COUNT; - public static final int OFFSET_CONTROL = OFFSET_DEST+WIDTH_DEST_ADDR; + public static final int OFFSET_DEST = 1; + public static final int OFFSET_COUNT = OFFSET_DEST+WIDTH_DEST_ADDR; + public static final int OFFSET_CONTROL = OFFSET_COUNT+WIDTH_COUNT; public static final int OFFSET_TI = OFFSET_CONTROL+0; public static final int OFFSET_DI = OFFSET_CONTROL+1; public static final int OFFSET_DL = OFFSET_CONTROL+2; @@ -63,7 +63,7 @@ public abstract class InstructionEncoder { boolean latch = getBit(OFFSET_DL, instr); boolean dataOut = getBit(OFFSET_DO, instr); boolean tokenOut = getBit(OFFSET_TO, instr); - boolean recycle = getBit(0, instr); + boolean recycle = getBit(OFFSET_RQ, instr); if (latch & !dataIn) return new Instruction.Kill(name, count, tokenIn); return new Instruction.Executable(name, dest, count, tokenIn, dataIn, latch, dataOut, tokenOut, recycle); @@ -103,15 +103,15 @@ public abstract class InstructionEncoder { if (d instanceof Instruction.Executable) { Instruction.Executable inst = (Instruction.Executable)d; - instr |= putField(OFFSET_DEST+WIDTH_DEST_ADDR-1, OFFSET_DEST, inst.dest==null?0:getDestAddr(inst.dest)); - instr |= putField(OFFSET_COUNT+WIDTH_COUNT-1, OFFSET_COUNT, inst.count); - instr |= putField(OFFSET_TI, OFFSET_TI, inst.tokenIn?1:0); - instr |= putField(OFFSET_DI, OFFSET_DI, inst.dataIn?1:0); - instr |= putField(OFFSET_DL, OFFSET_DL, inst.latch?1:0); - instr |= putField(OFFSET_DO, OFFSET_DO, inst.dataOut?1:0); - instr |= putField(OFFSET_TO, OFFSET_TO, inst.tokenOut?1:0); - instr |= putField(OFFSET_RQ, OFFSET_RQ, inst.recycle?1:0); - instr |= putField(OFFSET_PUMP_ADDR+WIDTH_PUMP_ADDR-1, OFFSET_PUMP_ADDR, getBoxInstAddr(inst.benkoBox)); + instr |= putField(OFFSET_PUMP_ADDR+WIDTH_PUMP_ADDR-1, OFFSET_PUMP_ADDR, getBoxInstAddr(inst.benkoBox)); + instr |= putField(OFFSET_DEST+WIDTH_DEST_ADDR-1, OFFSET_DEST, inst.dest==null?0:getDestAddr(inst.dest)); + instr |= putField(OFFSET_COUNT+WIDTH_COUNT-1, OFFSET_COUNT, inst.count); + instr |= putField(OFFSET_TI, OFFSET_TI, inst.tokenIn?1:0); + instr |= putField(OFFSET_DI, OFFSET_DI, inst.dataIn?1:0); + instr |= putField(OFFSET_DL, OFFSET_DL, inst.latch?1:0); + instr |= putField(OFFSET_DO, OFFSET_DO, inst.dataOut?1:0); + instr |= putField(OFFSET_TO, OFFSET_TO, inst.tokenOut?1:0); + instr |= putField(OFFSET_RQ, OFFSET_RQ, inst.recycle?1:0); } else if (d instanceof Instruction.Literal.CodeBagDescriptor) { Instruction.Literal.CodeBagDescriptor lc = (Instruction.Literal.CodeBagDescriptor)d;