64bit変数はどうやってメモリに格納される?
当り前のことですが、後輩に質問されたのでメモメモ。
- unsigned intの場合
# define UINT_MAX 4294967295U int main(void){ unsigned int i = UINT_MAX; }
main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax subl %eax, %esp movl $-1, -4(%ebp) leave ret
- unsigned long long int の場合
#define ULLONG_MAX 18446744073709551615ULL int main(void){ unsigned long long l = ULLONG_MAX; }
main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax subl %eax, %esp movl $-1, -8(%ebp) movl $-1, -4(%ebp) leave ret
単純に、二つ並べて格納してるだけです。