MIPS EABI ========= Sizes and alignments -------------------- Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 (32-bit mode) 8 8 (64-bit mode) long long 8 8 float 4 4 double 8 8 pointers 4 4 (32-bit mode) 8 8 (64-bit mode) * alignment within aggregates (structs and unions) is as above, with padding added if needed * aggregates have alignment equal to that of their most aligned member * aggregates have sizes which are a multiple of their alignment ia32 Sizes and alignments -------------------- Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 long long 8 4 float 4 4 double 8 4 pointers 4 4 * alignment within aggregates (structs and unions) is as above, with padding added if needed * aggregates have alignment equal to that of their most aligned member * aggregates have sizes which are a multiple of their alignment This may result in tail padding. ia64 Sizes and alignments -------------------- Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 8 8 long long 8 8 float 4 4 double 8 8 pointers 8 8 * An entire structure or union object shall be aligned on the same boundary as its most strictly aligned member. * Each member shall be assigned to the lowest available offset with the appropriate alignment. This may require internal padding, depending on the previous member. * A structure's size shall be increased, if necessary, to make it a multiple of the alignment. This may require tail padding, depending on the last member. AMD 64 ------- Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 8 8 (64-bit mode) long long 8 4 8 8 (64-bit mode) float 4 4 double 8 4 pointers 4 4 8 8 (64-bit mode) powerpc - 32bit Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 long long 8 8 float 4 4 double 8 8 long double 16 16 pointers 4 4 powerpc - 64bit Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 8 8 long long 8 8 int128 16 16 float 4 4 double 8 8 long double 16 16 pointers 8 8 sparc: Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 long long 8 8 float 4 4 double 8 8 long double 16 8 pointers 4 4 s390: ------ Type Size (bytes) Alignment (bytes) char 1 1 short 2 2 int 4 4 unsigned 4 4 long 4 4 long long 8 8 float 4 4 double 8 8 long double 16 16 pointers 4 4 s390-zseries ---------