如何在 clang 中使用 _emit?

How use _emit in clang?

如何在 clang 编译器中使用 _emit 发出字节?

例如(在 MSVC 中):

#define emit_nop() _asm _emit 0x90

在支持 GNU 扩展的编译器中,不需要单独的 emit 关键字,只需使用 GNU C 内联汇编:

asm(".byte 0x90");   // implicitly   asm volatile

.long发出一个32位常量。

GNU C 内联 asm 解析以检测破坏或任何东西,所以你可以 asm("nop");

如果要使用修改寄存器的指令,通常需要使用 GNU C 扩展内联汇编 (output/input/clobbers) 将其告知编译器。参见 https://whosebug.com/tags/inline-assembly/info