#include <stdio.h>
#include "stdint.h"
uint64_t get_value() {
return 0x1020304050607080ULL;
}
int main(void) {
uint64_t value = get_value();
uintptr_t addr = (uintptr_t)&value;
uint16_t u16 = *(uint16_t*)addr;
uint16_t u16_2 = *(uint16_t*)&value;
uint64_t u64 = (*(uint64_t*)addr) & 0xFFFF;
uint16_t* ptr = (uint16_t*)&value;
printf("u16 = 0x%x, u16_2 = 0x%x, u64 = 0x%lx, *ptr=0x%x\n", u16
, u16_2
, u64
, *ptr
);
printf("*ptr = 0x%x\n", *ptr
); for (int i=0; i<4; ++i) {
printf("*ptr = 0x%x\n", *ptr
); ptr++;
}
printf("value = 0x%lx\n", value
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlICJzdGRpbnQuaCIKCnVpbnQ2NF90IGdldF92YWx1ZSgpIHsKCXJldHVybiAweDEwMjAzMDQwNTA2MDcwODBVTEw7Cn0KCmludCBtYWluKHZvaWQpIHsKCXVpbnQ2NF90IHZhbHVlID0gZ2V0X3ZhbHVlKCk7Cgl1aW50cHRyX3QgYWRkciA9ICh1aW50cHRyX3QpJnZhbHVlOwoJCgl1aW50MTZfdCB1MTYgPSAqKHVpbnQxNl90KilhZGRyOwoJdWludDE2X3QgdTE2XzIgPSAqKHVpbnQxNl90KikmdmFsdWU7Cgl1aW50NjRfdCB1NjQgPSAoKih1aW50NjRfdCopYWRkcikgJiAweEZGRkY7Cgl1aW50MTZfdCogcHRyID0gKHVpbnQxNl90KikmdmFsdWU7CglwcmludGYoInUxNiA9IDB4JXgsIHUxNl8yID0gMHgleCwgdTY0ID0gMHglbHgsICpwdHI9MHgleFxuIiwgdTE2LCB1MTZfMiwgdTY0LCAqcHRyKTsKCQoJcHJpbnRmKCIqcHRyID0gMHgleFxuIiwgKnB0cik7Cglmb3IgKGludCBpPTA7IGk8NDsgKytpKSB7CgkJcHJpbnRmKCIqcHRyID0gMHgleFxuIiwgKnB0cik7CgkJcHRyKys7Cgl9CgkKCXByaW50ZigidmFsdWUgPSAweCVseFxuIiwgdmFsdWUpOwoJCglyZXR1cm4gMDsKfQo=