_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 固有の仕様はここまで