私は64ビットのi7マシンを持っています。n個の32ビット整数にメモリを割り当てたとします。割り当てで実際に使用される物理レジスタの数:n、またはn / 2?
私はそれを見つけるために次の簡単なプログラムを書いてみました。
#include <iostream>
#include <cstdlib>
using namespace std;
int main (int argc, char *argv[]) {
int a[4];
cout << &a[0] << "\t" << &a[3] << endl;
cin.ignore (1);
return 0;
} // End main ()
出力は次のとおりです。
0018FA04 0018FA10
彼らは本来あるべきよりも遠くに見えます。アドレス04と07がないのはなぜですか?これは、システムが4つの32ビット整数を2つの64ビットレジスタにパックするのではなく、実際に4つ(またはそれ以上)の整数を割り当てていることを意味しますか?
よろしくお願いします。