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.