什么是破坏者?

What is a clobber?

Clang TargetInfo 有一个名为 getClobbers 的方法:

Returns a string of target-specific clobbers, in LLVM format.

那么,什么是破坏者?

被破坏的寄存器是被破坏的寄存器,即被内联汇编程序以不可预测的方式修改。这通常发生在您需要临时工时。注册或使用恰好将某些寄存器修改为 by-product.

的特定指令

通常程序员会显式声明寄存器,这些寄存器会被他的内联 asm 代码破坏,但有些可能被默认认为是垃圾,这就是 getClobbers 发挥作用的地方。

getClobbers returns 大多数目标的空结果。在 MIPS 上,GCC 历来没有在生成的代码中使用 </code>,因此大多数程序员都懒得将其声明为已破坏。为了降低可移植性成本,LLVM 认为 <code> 总是在内联 asm 中被破坏。另一个例子是 GCC 在 i386 和 x86_64 目标上 considered to be always clobbered by inline asm 的算术标志寄存器 (cc)。