一个被破坏的寄存器是指在内联汇编中以不可预测的方式被修改的寄存器。这通常发生在需要临时寄存器或使用特定指令的情况下,该指令恰好会作为副产品修改某些寄存器。通常,程序员会明确声明由他的内联asm代码破坏的寄存器,但有些寄存器可能默认被认为是无用的,这就是“getClobbers”的作用所在。对于大多数目标,getClobbers返回空结果。在MIPS上,GCC历史上没有在生成的代码中使用$1,因此大多数程序员没有费心将其声明为被破坏的。为了减少可移植性成本,LLVM认为$1始终在内联asm中被破坏。另一个例子是算术标志寄存器(cc),在i386和x86_64目标上,GCC 被认为总是被内联asm破坏。