次の方法で共有


_emit 疑似命令

Microsoft 固有の仕様

_emit 疑似命令によって、現在のテキスト セグメント内の現在の位置に 1 バイトを定義します。 _emit 疑似命令は、MASM の DB ディレクティブに似ています。

次のフラグメントは、0x4A、0x43、0x4B バイトをコードに配置します。

#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
.
.
.
__asm {
    randasm
    }

注意事項

_emit によってレジスタを変更する命令が生成され、最適化を使用してアプリケーションをコンパイルした場合、コンパイラによって影響を受けるレジスタを特定することはできません。 たとえば、_emit によって rax レジスタを変更する命令が生成された場合、rax が変更されたかどうかをコンパイラが認識することはありません。 その後、コンパイラは、インライン アセンブラー コードの実行後に、そのレジスタの値について誤って想定する可能性があります。 その結果、アプリケーションの実行時に予期しない動作が発生する可能性があります。

Microsoft 固有の仕様はここまで

関連項目

__asm ブロックでのアセンブリ言語の使用