x86-64

    3

    1答えて

    最新のハイエンドIntel CPUでx64(x86-64)命令の並べ替えによるパフォーマンスの向上。非常にタイムクリティカルな状況で迷惑をかける価値がありますか? また、ある種の奇妙なケースで長距離コードの移動を可能にするために、レジスタの使用を変更する/追加のレジスタを使用することで利益が得られる可能性について疑問に思っていましたか?

    2

    3答えて

    _mm256_blendv_pd()は、位置63,127,191,255のビットを調べます。uint8_tの4つの下位ビットをAVXレジスタのこれらの位置に分散させる効率的な方法はありますか? また、_mm256_cmp_pd()の結果のように、AVXレジスタの対応する64ビットコンポーネントで繰り返されるように、これらのビットをブロードキャストする効率的な方法はありますか? 命令セットはAVX2

    5

    1答えて

    Intel x86-64マザーボードに2枚のDIMMを挿入したとします。すべてのメモリインターリーブ(バンクおよびチャネル)が無効になります。 Linux kernel(バージョン4.11.11)のDIMMの1つの物理メモリスペースを予約し、その物理的(予約済み)メモリスペースをアプリケーションに公開することを試みています。 DIMMはメモリチャネルででなく、になります。これをどうやってやりますか

    0

    1答えて

    私はメモリを解放する前にCPUキャッシュからメモリ範囲を取り除いています。理想的には、これらのキャッシュラインをメモリに保存せずに放棄するだけです。誰もその値を使うつもりはなく、そのメモリ範囲(malloc()/new/_mm_malloc()などの後)を再度取得する人は、まず新しい値でメモリを埋めるでしょう。 this question suggestsとして、現在のx86_64で理想を達成する

    1

    1答えて

    これまでのところ、/ mnt/hugepages1G /のファイルをバッキングとして使用しようとしたとき、segfaultsを取得しました。/mnt/hugepagesで2Mのスーパーページを使うとうまくいきます Linuxは2Mの共有メモリしかサポートしていません。しかし、私はそれに誓うことはできません。ドキュメントで見つけることができません。 https://git.kernel.org/pu

    -1

    1答えて

    私はx86 CPUの機能を得るための小さなプログラムを書こうと思っています。 (1)EAX=1: ...... As of January 2011, the standard Intel feature flags are as follows: ...... (2)EAX=80000001h: ...... AMD feature flags are as follows: ...

    3

    1答えて

    私はIACA(インテルの静的コードアナライザ)で遊んできました。 このように、私はマジックを手動でバイト入力することができ、組立スニペットをテストするときにそれが正常に動作します : procedure TSlice.BitSwap(a, b: integer); asm //RCX = self //edx = a //r8d = b mov ebx,

    -1

    1答えて

    obj.CurrSize -= size; 0x00000000003ad2d7 <+183>: mov eax,0x0 0x00000000003ad2dc <+188>: test rax,rax 0x00000000003ad2df <+191>: je 0x3ad2e6 <+198> 0x00000000003ad2e1 <+193>: call 0x0 0x000000000

    1

    1答えて

    誰かがx64 asmの動作を理解できますか?私はそのためのあらゆる種類の文書を見つけることができません。 ので、基本的に、我々は持っている: のx64はRAXを登録します。 x32レジスタEAX。 x16レジスタAX。 x8レジスタAL。 となりましたコード: mov rax, -1 (0xFFFFFFFFFFFFFFFF) add al, 1 結果は0xFFFFFFFFFFFFFF00にな

    3

    1答えて

    私はインテルx64アセンブリ、NASMコンパイラを使用して、 "0x4000000000000000"定数をメモリに移動しようとしています(ieee 754標準のdoubleは2.0になります)。 私が使用しているコードは次のとおりです。署名DWORD即時の範囲を超える: %define two 0x4000000000000000 section .text foo: push rb