1 package edu.berkeley.fleet.demo;
2 import edu.berkeley.fleet.api.*;
3 import static edu.berkeley.fleet.api.Instruction.Set.*;
4 import edu.berkeley.fleet.interpreter.Interpreter;
8 private static Instruction literal(Dock dock, int literal) {
9 return new Instruction.Set(dock, false, Predicate.Default,
10 SetDest.DataLatch, literal);
12 private static Instruction deliver(Dock dock) {
13 return new Instruction.Move(dock, false, Predicate.Default,
14 false, null, false, false, false, false, true, false);
16 private static Instruction collectAndSend(Dock dock, Destination dest) {
17 return new Instruction.Move(dock, false, Predicate.Default,
18 false, dock.getPath(dest,null), false, true, true, false, true, false);
20 private static Instruction recvAndDeliver(Dock dock) {
21 return new Instruction.Move(dock, false, Predicate.Default,
22 false, null, false, true, true, false, true, false);
25 public static void main(String[] s) {
27 Fleet fleet = new Interpreter(new String[] {
33 Ship alu = fleet.getShip("alu2", 0);
34 Ship debug = fleet.getShip("Debug", 0);
35 Dock debugIn = debug.getDock("in");
37 Instruction[] instructions = new Instruction[] {
38 literal(alu.getDock("in1"), 1),
39 literal(alu.getDock("in2"), 2),
40 literal(alu.getDock("inOp"), 0 /* opcode for ADD */),
41 deliver(alu.getDock("in1")),
42 deliver(alu.getDock("in2")),
43 deliver(alu.getDock("inOp")),
44 collectAndSend(alu.getDock("out"), debugIn.getDataDestination()),
45 recvAndDeliver(debugIn),
48 FleetProcess fp = fleet.run(instructions);
49 BitVector bv = fp.readWord();
50 System.out.println(bv.toLong());