Major bugfix (subtraction) and changes (movff, literal operations).
commit393e20412350432092c4dfe7c0659912ea82a27a
authorVincent St-Amour <stamourv@iro.umontreal.ca>
Tue, 21 Apr 2009 05:33:39 +0000 (21 01:33 -0400)
committerVincent St-Amour <stamourv@iro.umontreal.ca>
Tue, 21 Apr 2009 05:33:39 +0000 (21 01:33 -0400)
treea0c8d5d31d5df28f83bf3cf1bea3b2e757463c63
parent795b8f19321ce05b2b0bd3a40034afa1a7c4e72e
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).
cfg.scm
code-generation.scm
parser.scm
pic18-sim.scm