All data items are held in the native byte order of the MSP430 processor. The plain character type is signed by default. The floating-point types float and double are implemented as 32-bit and 64-bit IEEE floating-point.
|Data Type||Size in bytes||Alignment in bytes|
|char, signed char, and unsigned char||1||1|
|int and unsigned int||2||2|
|short and unsigned short||2||2|
|long and unsigned long||4||2|
|long long and unsigned long long||8||2|
|float and double (compiled with -msd)||4||2|
|double and long double||8||2|
|type * (pointer)||2||2|
When compiling for the MSP430X in the 1MB addressing mode using -m1m, function pointers are still represented in a 16-bit pointer but are ‘thunked’. That is, the compiler uses an indirect call through the 16-bit address to anywhere in the 20-bit address range.
As a C programmer this has no impact on the way that you write your code, but if you are passing function pointers to assembly code or are dealing with function pointers at a low-level, such as porting an RTOS, then you need to be aware that function pointers are not held as 20-bit addresses.