Files -------------------------------------------------------------------------

 Makefile
 
      test.pop: test popcorn, Cyclone, cl, and cl/2.
     bench.pop: benchmark popcorn, Cyclone, cl, and cl/2.
  test_pop.pop: tests/benchmarks compiled with popcorn and Cyclone 
     test_ms.c: tests/benchmarks compiled with Microsoft cl and cl/2
 
        interp.pop: popcorn byte-code interpreter
    interp_gen.pop: Cyclone byte-code interpreter run-time specializer
      pop_prog.pop: popcorn byte-code program to be intepreted
    interp_nopt.c: C byte-code interpreter (compiled w/o optimizations)
     interp_opt.c: C byte-code interpreter (compiled w/ optimizations)
         c_prog.c: C byte-code program to be interpreted

Make / Execute -------------------------------------------------------------

  1. Type "make" to make
  2. Type "bench_int" to execute

What's Happening? -------------------------------------------------------------

Four different byte-code interpreters are benchmarked, interpreting
the small arithmetic expression contained in pop_prog.pop (popcorn
version) and c_prog.c (C version).  The small arithmetic expression
performs the following operations:

  mem[0] = (60 + mem[3]) * 10;
  mem[1] = 10;
  mem[2] = 20;
  mem[3] =  3;

Running "main" should display something like this:

  % main
   *** popcorn **** 
  Memory: 0 Memory: 1 Memory: 2 Memory: 3 
  Memory: 630 Memory: 10 Memory: 20 Memory: 3 
  Time: 2090 msec
  
   *** cyclone **** 
  Memory: 0 Memory: 1 Memory: 2 Memory: 3 
  Memory: 630 Memory: 10 Memory: 20 Memory: 3 
  Time: 660 msec
  
   *** Microsoft cl **** 
  Memory: 0 Memory: 1 Memory: 2 Memory: 3 
  Memory: 630 Memory: 10 Memory: 20 Memory: 3 
  Time: 770 msec
  
   *** Microsoft cl /02 **** 
  Memory: 0 Memory: 1 Memory: 2 Memory: 3 
  Memory: 630 Memory: 10 Memory: 20 Memory: 3 
  Time: 330 msec

For each version of the interpreter (popcorn, Cyclone, MS w/o opt, MS
w/ opt), the memory contents before and after execution are displayed,
along with the time to interpret the program 100,000 times.
