sdg*_*sdh 4 compiler-construction llvm clang
Clang TargetInfo有一个叫做的方法getClobbers:
以LLVM格式返回一组特定于目标的clobber.
那么,什么是咒语呢?
yug*_*ugr 11
被破坏的寄存器是一个被删除的寄存器,即由内联汇编程序以不可预测的方式进行修改.这通常发生在需要温度时.注册或使用特定指令,恰好将某些寄存器修改为副产品.
程序员通常会明确声明由其内联asm代码破坏的寄存器,但有些可能会被认为是默认情况下被破坏的,而这正是getClobbers发挥作用的地方.
getClobbers返回大多数目标的空结果.在MIPS上,GCC历来不会$1在生成的代码中使用,因此大多数程序员都不愿意将其声明为破坏.为了降低可移植性成本,LLVM认为$1总是在内联asm中被破坏.