Thu Jun 4 14:55:53 CEST 2009


The overall PIC24/PIC30 architecture isn't too different from the
PIC18 to make most code work similarly.  However, the assembler will
be quite different due to presence of addressing modes that were
previously unavailable.  Solving this will also make porting to
different architectures simpler.

The first problem to solve is how to express them syntactically.  The
Staapl PIC18 assembler uses a flat syntax which is no longer
suffcient.  See table 4A, page 5 of the migration guide[1].

It's probably best to implement addressing modes as argument
transformer functions that live in the Scheme namespace.  However,
this requires them to fill multiple fields.

Maybe the complexity of the assembler should be raised a bit to be
able to access multiple fields from a single argument.  I.e. start
with the PIC18 GOTO opcode.

How does LLVM expres addressing modes?

[1] http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf