[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