--- /dev/null
+package edu.berkeley.fleet.interpreter.ships;
+import edu.berkeley.fleet.interpreter.*;
+import edu.berkeley.fleet.*;
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * @author Dominic Antonelli <dantonel@berkeley.edu>
+ */
+public class MultiplierShip extends InterpreterShip {
+
+ private int link;
+
+ DataInbox A = new DataInbox(this, "A");
+ DataInbox B = new DataInbox(this, "B");
+ DataOutbox out0 = new DataOutbox(this, "out0");
+ DataOutbox out1 = new DataOutbox(this, "out1");
+
+ public MultiplierShip(Interpreter fleet, String name) {
+ super(fleet, name);
+ }
+
+ public void service() {
+ if (!out0.readyForDataFromShip()) return;
+ if (!out1.readyForDataFromShip()) return;
+ if (!A.dataReadyForShip()) return;
+ if (!B.dataReadyForShip()) return;
+
+ long inA = (long)A.removeDataForShip();
+ long inB = (long)B.removeDataForShip();
+ long result = inA * inB;
+ int result0 = (int)(result >> 32);
+ int result1 = (int)(result & 0xffffffff);
+
+ out0.addDataFromShip(result0);
+ out1.addDataFromShip(result1);
+ }
+}