昨日「C99でlong long int型が予約語に増えました。32bitCPUではこのlong long intの演算をどのように扱っているのか」と、考えていました。
考えるもなにも、実際にVCの混合モードでアセンブラをみたら解決しました。
void oppai(void) { unsigned long long int hogehoge; hogehoge = 0xffffffffffffffff; }
こんなCプログラムを書きました。これでlong long int型(64bit)がどういう扱いになるかがわかります。
unsigned long long int hogehoge; hogehoge = 0xffffffffffffffff; 0041138E mov dword ptr [hogehoge],0FFFFFFFFh 00411395 mov dword ptr [ebp-8],0FFFFFFFFh
32bit(dword型)で2回演算していることがわかりました。
おわり。