Data Representation


Fundamental types

 Type Size Alignment
 char 1 1
 short 2 2
 int 4 4
 long 4 4
 long long 8 8
 void* 4 4
 void(*)() 4 4
 float 4 4
 double 8 8
 long double 8 8

size_t
Size 4
Alignment 4

va_list

Size 16
Alignment 4
Passed by reference

X86-32 and ARM:

struct __va_list_tag {
    void *ptr;
    void *padding1;
    void *padding2;
    void *padding3;
};
typedef struct __va_list_tag valist[1];

X86-64:

struct __va_list_tag {
    unsigned gp_offset;
    unsigned fp_offset;
    void *overflow_arg_area;
    void *reg_save_area;
};
typedef struct __va_list_tag valist[1];


jmp_buf

TODO


Comments