如何在 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。
如何在 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。