Major bugfix (subtraction) and changes (movff, literal operations).
Fixed a long-standing (was there from the beginning) but recently
discovered bug with subtraction: depending on register allocation,
arguments could be swapped during code generation, which broke the
semantics of subtraction. Argument order is now preserved, and
subtraction now works as intended.
In order to do that, movff was needed. movff support was therefore
added to the simulator. It is not yet fully integrated to the register
allocation (values can be kept in wreg a little bit longer, which can
save some extra moves).
Literals as first arguments of operators (with variables as second)
now work even with non-commutative operators (the subtraction bug was
discovered while testing this).