[Icc-430] 430X > 64K support
Richard Man
richard at imagecraft.com
Wed Aug 20 01:20:16 PDT 2008
I am now adding compiler support for the 430X >64K addressing. At the
minimum, we need to support function code and flash constant
placement anywhere in the 20-bit address map.
A new IDE/linker option to activate 20-bit address support will be
added. This *may* be the default for any 430X device with > 64K flash
memory. The general guideline is that we will support > 64K code but
not data as there is no 430X devices with more than 64K SRAM.
Function Calls: use CALLA/RETA
Branches: use BRA
Any instructions that touch the PC will use the "A" variants.
****************
As for pointer type, the obvious choice is to support 16 bits data
pointer and 32 bits (or 24 bits, but that is difficult to express)
code pointers. Unfortunately, the compiler architecture is not mixed
pointer size friendly. To change that will require a lot of effort,
and with the 430X devices being a relatively rare part, I am not
entirely sure the ROI is worth it.
A compromise is to use 16 bits pointer, but that the (16 bits) code
pointer is actually a pointer to a 3 byte real pointer. This is not
as odd as it sounds, as to support the Code Compressor, we already do
this extra level of indirection for code pointer, so making the entry
to be a full 24 bits pointer should be fairly easy. There is one
extra level of indirection for code pointer reference, but as
mentioned, this is already done.
****************
This should satisfy most people's requirements for using the 430X
devices. I will of course add support for new instructions like
multiple bit shifts etc.
Comments? Suggestions?
// richard <http://www.imagecraft.com/> blog: <http://imagecraft.wordpress.com>
<http://www.dragonsgate.net/mailman/listinfo> On-line orders,
support, and listservers available on web site.
[ For technical support on ImageCraft products, please include all
previous replies in your msgs. ]
More information about the Icc-430
mailing list