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.