什么是clobber?

时间:2017-01-27 17:39:10

标签: compiler-construction clang llvm

Clang TargetInfo有一个名为import UIKit import EVURLCache class MainVC: UIViewController, UIWebViewDelegate { @IBOutlet weak var webView: UIWebView! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! override func viewDidLoad() { super.viewDidLoad() activityIndicator.startAnimating() webView.delegate = self let BASE_URL = "http://www.xeoscript.com/" let url = URL(string: BASE_URL) let request = URLRequest(url: url!) webView.loadRequest(request) } func webViewDidFinishLoad(_ webView: UIWebView) { activityIndicator.stopAnimating() } } 的方法:

  

以LLVM格式返回特定于目标的clobber字符串。

那么,什么是咒骂?

1 个答案:

答案 0 :(得分:5)

被破坏的寄存器是一个被删除的寄存器,即由内联汇编程序以不可预测的方式进行修改。这通常发生在需要温度时。注册或使用特定指令,恰好将某些寄存器修改为副产品。

通常程序员明确声明由其内联asm代码破坏的寄存器,但有些可能被认为是默认情况下被破坏的,而getClobbers就是在这里发挥作用。

getClobbers为大多数目标返回空结果。关于MIPS GCC历来没有在生成的代码中使用$1,所以大多数程序员都没有费心将它声明为破坏。为了降低可移植性成本,LLVM认为$1总是在内联asm中被破坏。