Changes by: Jason Hickey (jyh at cs.caltech.edu)
Date: 2003-03-22 14:17:51 -0800 (Sat, 22 Mar 2003)
Revision: 4215
Log message:

      One very important thing I forgot in the last commit: I converted
      the assembly to use three-operand register instructions.  What this
      really means is that all assignments to registers are binding
      occurrences.  In other words, registers are immutable, and we can
      call this functional assembly code (an oxymoron if I ever heard one).
      This allows much greater flexibility in assembly code motion.
      The printer knows how to print these so that they are valid.
      For example, the instruction ADD (src1, src2, dst) prints as:
      
          add src1, dst   /* if src2 = dst (dst is a register) */
      or
          mov src2, dst   /* if src1 != dst */
          add src1, dst
      
      This commit makes a change to Jcc.  They now look like regular
      conditionals, so the assembly has the usual tree structure.
      The printer knows how to print so that this is actually valid
      assembly.
      
      This change makes it easier to move code into the branches of
      the conditional.
      

Changes  Path
+3 -3 metaprl-branches/lm_libmojave/theories/experimental/compile/Makefile
+3 -0 metaprl-branches/lm_libmojave/theories/experimental/compile/m_cps.ml
+7 -6 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ir.ml
+1 -0 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ir.mli
+104 -104 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ra_live.ml
+6 -4 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ra_type.ml
+6 -4 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ra_type.mli
+6 -4 metaprl-branches/lm_libmojave/theories/experimental/compile/m_ra_type.mlz
+1 -1 metaprl-branches/lm_libmojave/theories/experimental/compile/m_test.ml
Added metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_asm.ml
Properties metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_asm.ml
Added metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_asm.mli
Properties metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_asm.mli
+332 -326 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_backend.ml
+1 -1 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_backend.mli
+3 -3 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_coalesce.ml
+1 -1 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_coalesce.mli
+31 -74 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_codegen.ml
+1 -1 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_frame.ml
+1 -1 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_frame.mli
Added metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_inst_type.mlz
Properties metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_inst_type.mlz
+11 -6 metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_spill.ml
Added metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_term.ml
Properties metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_term.ml
Added metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_term.mli
Properties metaprl-branches/lm_libmojave/theories/experimental/compile/m_x86_term.mli
Deleted metaprl-branches/lm_libmojave/theories/experimental/compile/x86_asm.ml
Deleted metaprl-branches/lm_libmojave/theories/experimental/compile/x86_asm.mli
Deleted metaprl-branches/lm_libmojave/theories/experimental/compile/x86_inst_type.mlz
Deleted metaprl-branches/lm_libmojave/theories/experimental/compile/x86_term.ml
Deleted metaprl-branches/lm_libmojave/theories/experimental/compile/x86_term.mli