1
主な動機:スタック汚染を避けるためにmovntdqaアセンブラコマンドを使用することです。このコマンドは、書き込み結合メモリ(WSおよびUSWCとも呼ばれる)でのみ機能します。ウィンドウの下で、「結合合成」メモリブロックを割り当てる方法は?
主な動機:スタック汚染を避けるためにmovntdqaアセンブラコマンドを使用することです。このコマンドは、書き込み結合メモリ(WSおよびUSWCとも呼ばれる)でのみ機能します。ウィンドウの下で、「結合合成」メモリブロックを割り当てる方法は?
PAGE_WRITECOMBINEをVirtualAllocEx()に渡します。そのページへの順次書き込みは、MMUによって書き込み結合されます。読取りまたは非順次書込みは、厳しい性能上の不利益を招く。
私はそれを試してみました: のchar * ANS =(チャー*)VirtualAllocEx(HPROCESS、×1024 0,1024 * 64、MEM_COMMIT、PAGE_READWRITE | PAGE_WRITECOMBINE)。 GetLastError = 87 でPAGE_WRITECOMBINEをPAGE_NOCACHEに置き換えると、常に0が返されます。これはうまくいきますが、メモリアクセスは非常に遅いです。しかし、私はmovntdqaが広告として動作するように結合する必要があります。 – yigal
Hmm。ページを作成し、VirtualProtectEx()でその事実の後にアクセス権を変更してみてください。 – Crashworks
も動作しません。以下のコードは、87 unsigned long oldを返します。 err = VirtualProtectEx(hProcess、ans、size、PAGE_READWRITE | PAGE_WRITECOMBINE、&old); – yigal