Both array mutation and array reference now work.
commit48cbff9549479a27cf5b158ff287d249bb4bc4ee
authorVincent St-Amour <stamourv@iro.umontreal.ca>
Sun, 21 Dec 2008 04:58:48 +0000 (20 23:58 -0500)
committerVincent St-Amour <stamourv@iro.umontreal.ca>
Sun, 21 Dec 2008 04:58:48 +0000 (20 23:58 -0500)
treec56b49169ae94bca834522f128be7dce1d61ace5
parente67c5d169d8caf3b928fb3a64a6994d7766c5f05
Both array mutation and array reference now work.
The simulator has been updated to simulate it.
Special variables SIXPIC_FSR0..2 have been introduced. These variables
are always of type int16, and are always stored in the appropriate FSR
register. Wherever an array reference is made using one of these
variables, the destination address is not calculated, whatever was in
the FSR is used. This is faster, but means that SIXPIC_FSR0[0] and
SIXPIC_FSR0[1] return the same value. The dereferencement operator
should be used instead of the array indexing one, but six does not
support it yet.
The special variable code has been changes accordingly, now instead of
simply setting a compiler variable, when a special variable is found,
a thunk associated to the variable is called, and it can do pretty
much anything it wants. This is much more flexible.
Also, minor changes were made to the type system : literals are now of
the smallest type possible, and arithmetic operations return a value
of the type of the largest operand (this might cause early overflows,
but I doubt this would come up often).
TODO
cfg.scm
operators.scm
parser.scm
pic18-sim.scm