昨日の記事で、x64用にコンパイルしなおすメリットを書きましたが、通常は以下のようなデメリットのほうがそれらを上回ります。 ポインタ、関数アドレスなどがすべて64bit幅になるので、プログラムのサイズが増えます。その結果、L1/L2/L3 cacheに収まらなくなることがあります。プログラムのサイズだけではなく、ポインタなどを含む構造体のサイズも膨らみます。あと4byteではなく8byteでalignした場合などは、配列のデータサイズも著しく膨張します。これまたL1/L2/L3 cacheに収まらなくなる原因になります。 構造体サイズが増えた結果、アドレッシングがしきれなくてシフトや掛け算が必要になることがあります。 mov ebx , [ebp + eax * 8 + 123]; x86でよく見かけるアドレッシングですが、x86でも、倍率は、1,2,4,8のままです。何故AMDが命令拡張