x86-64

    4

    2答えて

    少し好奇心が見つかりました。 00000000004019ae: test %si,%si 00000000004019b1: movups %xmm0,%xmm0 00000000004019b4: je 0x401f40 <main(int, char**)+1904> 質問:2番目の命令はどのような目的のために使用されますか?GCCは次のコードを生成しているようです。それは/それ/何

    2

    1答えて

    値: cmpl $0x7,0xc(%rsp) これは、メモリ内の$ RSPからのオフセット12日にアクセスしています。したがって、メモリにrspの後に48バイト、またはrspの後に12*8 = 96の96番目のバイトにアクセスすると、12*4 = 48にアクセスしていますか?これは64ビットアーキテクチャなので、レジスタの長さは8バイトなので、96ビットですか? いずれにしても、gdbのその位置に

    3

    2答えて

    x86_64アーキテクチャのLinux 3.0でのプロセスには、64ビットの仮想アドレス空間があります。 0は、NULLポインタを示すために、このアドレス空間で無効なメモリアドレス[以下の定義を参照]であることが保証されています。 その他の64ビット番号(存在する場合)は、決して有効なメモリアドレスではないことが保証されていますが、その理由は何ですか? たとえば、1は有効な住所ですか? 2^64-

    1

    1答えて

    私は非常に奇妙な問題を抱えており、wwwにあるいくつかの解決策を試しましたが、私の問題は解決していません。 数日前、私はメタファイルからデータベースに切り替えることにしました。私のチョイスはSQLiteに行きました。なぜなら、ユーザーに自分のプログラムを実行するためにデータベースサーバー全体を強制的に実行させたくないからです。 私は自分のラップトップにSQLiteを読み込み、プロジェクトに参照して

    1

    2答えて

    私は64ビットのビルド環境をUbuntuにインストールしています。たとえば、あるライブラリのソースコードをダウンロードし、そのソースコードを使って32ビット版と64ビット版を作成したいとします。 ./configure --prefix=/opt/libtvzombie --with-opengl --with-other-option1 ...と、以下のように/opt/libtvzombie

    2

    1答えて

    gcc -m64 -O test.c -save-tempsを実行した後、私は気付いた: mov %edi, %edi が生成されたアセンブリに表示されます。この指示は何かをしますか?それは%ediをそれ自身に移し、効果的に何も達成しません。 すべての最適化レベルでこのアセンブリが生成されますが、場合によっては配置が異なる場合があります。 さらなる状況を提供する必要がある場合は教えてください。この

    1

    1答えて

    (Linux 3.0の、x86_64版) 私はのrecvを呼び出しを停止した場合(2)接続されているTCPソケットでしばらく、および他のホストは、おそらくよりも、データを送信し続けますこのデータはカーネルによって受信されバッファリングされるので、次にrecvを呼び出すと、すべての待機データとともにすばやく戻ります。 私の質問はこの受信バッファの大きさです。どのように機能しますか?動作を調整するため

    0

    1答えて

    私は現在、2回設定してビルドし、出力をlipoと組み合わせることでaprの32/64ビット版を構築しています(apr-1.4.5) I apr-util-1.4.1で64ビット版で同じことを達成しようとしていますが、私の出力はすべてi386 32ビットと思われます。 ./configure --target=x86_64 --prefix=`pwd`/64bit --with-apr=`pwd`/

    23

    7答えて

    は、次の行はどういう意味: ... 401147: ff 24 c5 80 26 40 00 jmpq *0x402680(,%rax,8) ... メモリアドレスの前にアスタリスクは何を意味するのでしょうか? また、メモリアクセスメソッドに最初のレジスタ値がない場合はどういう意味ですか? 通常、( "%register"、%rax、8)のようなものですが、この場合は最初のレジスタがありま

    10

    3答えて

    x86-64命令セットは、実行可能コードを合理化するのに役立つレジスタおよびその他の改良を追加します。しかし、多くのアプリケーションでは、増加したポインタサイズは負担です。すべてのポインタの余分な未使用バイトがキャッシュを詰まらせ、RAMをオーバーフローさせることさえあります。たとえば、GCCは-m32フラグでビルドされていますが、これが理由です。 32ビット値をロードしてポインタとして扱うことは