5

NOP オペコードに代わる命令を提供するオンライン ソースを知っている人はいますか?

「xchg axe、ax」など。そのためのツールもあると確信しています。誰かが私にその方向を教えてもらえますか?

4

6 に答える 6

4

このページには、エンコーディングの長さが長くなる NOP の代替案の優れたリストがあります: http://www.asmpedia.org/index.php?title=NOP

于 2011-09-29T16:24:55.847 に答える
4

一部のシェルコード エンジンにはnopスレッド ジェネレーターが含まれています (それが必要な場合)。

nopさまざまな長さの等価物は無数にありますが、網羅的なリストは実用的ではありません。

たとえば、push eax; pop eaxは事実上nop. esp(有効ななどを想定)

またはinc eax; dec eax(オーバーフローがないか、テストしてからオーバーフローフラグをリセットすると仮定します)。

于 2011-09-29T18:52:23.177 に答える
2

Intel 最適化マニュアルと Intel および AMD の取扱説明書には、すべての no op 同等関数のリストが含まれているはずです。それらのほとんどはマルチバイトのノーオペレーションであり、ブランチやコードキャッシュターゲットなどを整列させるために使用されることに注意してください。

于 2011-09-29T18:39:09.433 に答える
1

一番上の回答のデッドリンクのインターネットアーカイブから。

90              nop
6690            xchg    ax,ax ; 66: switch to 16-bit operand 90: opcode 
0f1f00          nop     dword ptr [eax] ; 0f1f: 2-byte opcode 00: mod=00 reg=000 rm=000 [EAX]
0f1f4000        nop     dword ptr [eax] ; 0f1f: 2-byte opcode 40: mod=01 reg=000 rm=000 [EAX+0x00]
0f1f440000      nop     dword ptr [eax+eax] ; 0f1f: 2-byte opcode 44: mod=01 reg=000 rm=100 SIB + 0x00
660f1f440000    nop     word ptr [eax+eax] ; 66: switch to 16-bit operand 0f1f: 2-byte opcode 44: mod=01 reg=000 rm=100 SIB + 0x00
0f1f8000000000  nop     dword ptr [eax] ; 0f1f: 2-byte opcode 80: mod=10 reg=000 rm=000 [EAX+0x00000000]
于 2018-08-25T19:56:11.990 に答える
0

(フラグ以外の)何も変更しないさまざまな操作について考えてみてください。レジスタにゼロを追加するか、それ自体のレジスタとそれ自体のレジスタを追加して、レジスタをそれ自体に移動します。0を引くか、ゼロを使用して、〜0を使用します。ビットテストタイプの命令。通常はandですが、宛先は変更されません。

于 2011-09-29T18:50:00.317 に答える