From c8c6fdab27c15623b579fd6d6a24d41e915e90d2 Mon Sep 17 00:00:00 2001 From: megacz Date: Sat, 14 Mar 2009 21:15:37 -0700 Subject: [PATCH] add Program, a collection of CodeBags --- src/edu/berkeley/fleet/loops/Program.java | 57 +++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/edu/berkeley/fleet/loops/Program.java diff --git a/src/edu/berkeley/fleet/loops/Program.java b/src/edu/berkeley/fleet/loops/Program.java new file mode 100644 index 0000000..f32fecb --- /dev/null +++ b/src/edu/berkeley/fleet/loops/Program.java @@ -0,0 +1,57 @@ +package edu.berkeley.fleet.loops; +import edu.berkeley.fleet.api.*; +import java.util.*; +import java.net.*; + +/** + * A program is a collection of CodeBags resident in a particular Memory. + */ +public class Program { + + private Ship memoryShip; + private Fleet fleet; + private long leastUnallocatedAddress; + private long startAddress; + + private HashSet codeBags = new HashSet(); + + public Program(Ship memoryShip) { this(memoryShip, 0); } + public Program(Ship memoryShip, long startAddress) { + this.fleet = memoryShip.getFleet(); + this.memoryShip = memoryShip; + this.startAddress = startAddress; + this.leastUnallocatedAddress = startAddress; + } + + public void run(FleetProcess fp, CodeBag run) { + System.out.println("invoking..."); + Context ctx = new Context(fleet); + LoopFactory lf; + lf = new LoopFactory(ctx, memoryShip.getDock("inCBD"), 1); + lf.literal( (run.baseAddress<<6) | run.instructions.length ); + lf.deliver(); + ctx.dispatch(fp); + System.out.println("invoked."); + } + + public void install(FleetProcess fp) { + BitVector[] bvs = new BitVector[(int)(leastUnallocatedAddress-startAddress)]; + int j = 0; + for(CodeBag cb : codeBags) + for(int i=0; i