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
enum (enumeration) 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.