如何在clang中使用_emit?

问题描述 投票:0回答:1

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

例如(在MSVC中):

#define emit_nop() _asm _emit 0x90
assembly clang inline-assembly llvm-clang emit
1个回答
1
投票

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

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

或者.long发出一个32位常数。

GNU C inline asm未被解析为检测clobbers或任何东西,所以你可以只是asm("nop");

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

© www.soinside.com 2019 - 2024. All rights reserved.