Clean up of some of the comments or unnecesary debugging things
[TinyThreePassCompiler/.git] / sim.js
1 function simulate(asm, args) {
2   var r0 = undefined;
3   var r1 = undefined;
4   var stack = [];
5   asm.forEach(function (instruct) {
6     var match = instruct.match(/(IM|AR)\s+(\d+)/) || [0, instruct, 0];
7     var ins = match[1];
8     var n = match[2] | 0;
9
10     if (ins == "IM") {
11       r0 = n;
12     } else if (ins == "AR") {
13       r0 = args[n];
14     } else if (ins == "SW") {
15       var tmp = r0;
16       r0 = r1;
17       r1 = tmp;
18     } else if (ins == "PU") {
19       stack.push(r0);
20     } else if (ins == "PO") {
21       r0 = stack.pop();
22     } else if (ins == "AD") {
23       r0 += r1;
24     } else if (ins == "SU") {
25       r0 -= r1;
26     } else if (ins == "MU") {
27       r0 *= r1;
28     } else if (ins == "DI") {
29       r0 /= r1;
30     }
31   });
32   return r0;
33 }
34
35 asm = [
36   "AR 0",
37   "SW",
38   "AR 1",
39   "SW",
40   "MU",
41   "SW",
42   "IM 25",
43   "SW",
44   "AD",
45   "SW",
46   "IM 3",
47   "SW",
48   "SU",
49 ];
50
51 var total = simulate(asm, [4, 5]);
52 console.log(total);