I chose to do this because of what I've read in the TI MSP430x4xx Family
User Guide:
"There are three possibilities when choosing between an MSP430 and
MSP430X instruction:
To use only the MSP430 instructions: The only exceptions are the CALLA
and the RETA instruction. This can be done if a few, simple rules are met:
Placement of all constants, variables, arrays, tables, and data
in the
lower 64 KB. This allows the use of MSP430 instructions with
16-bit
addressing for all data accesses. No pointers with 20-bit
addresses
are needed.
Placement of subroutine constants immediately after the
subroutine
code. This allows the use of the symbolic addressing mode with its
16-bit index to reach addresses within the range of PC ±32 KB.
To use only MSP430X instructions: The disadvantages of this method are
the reduced speed due to the additional CPU cycles and the increased
program space due to the necessary extension word for any double
operand instruction.
Use the best fitting instruction where needed"
And that is what I'm trying to do.
I managed to emit the calla instruction, and I'm working on the reta.
After that I should be adding the binutils support for using 20-bit
addresses (it will be quite a challenge.
Best regards,
Oszkar
I'm not planning to add 20-bit data instructions, nor 20-bit function
pointers.
I will only have 16-bit function pointers. Those functions will be forced
to be located in the lower 64K
Best regards,
Oszkar