最良の答えは、x86ビットx64アセンブラーでの比較だと思います
x32 ビット プログラムが整数 (5) などの変数を登録する場合、コードは次のようになります。
push 5
物事をよりよく理解するために、'push X' は以下へのショートカットです:
sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable
mov [esp],X //moves variable in @esp
これらのレジスタは 32 ビット (長さ 4 バイト) で、32 ビット プログラミング言語のポインタのサイズです。
ただし、64 ビット コードではサイズが 2 倍大きくなり、レジスタも同様です。当社のレジスタ ESP は x64 実行可能ファイルに存在しますが、x32 実行可能ファイルのように広く使用されていません。
代わりに、すべてのレジスターの名前の前に「R」が付きます (EAX は RAX になり、ESP は RSP になり、EDX は RDX になります)。
したがって、x64 実行可能ファイルのコードに違いはありませんが、「push X」のショートカットは次のようになります。
sub esp,8
mov [rsp],X
RSP のサイズは ESP の 2 倍 (64 ビット、8 バイト) です。
つまり、x64 ビットの実行可能ファイルは、x32 ビットの実行可能ファイルよりも多くのメモリを使用します。