【问题标题】:Clang doesn't support the Lock Prefix. How shall I workaround?Clang 不支持锁定前缀。我该如何解决?
【发布时间】:2011-02-25 12:51:13
【问题描述】:

假设这段代码:

  static inline void inc(int64_t* atomic)
  {
    __asm__ __volatile__
    (
      "lock incq %0\n"
        : "=m" (*atomic)
        : "m" (*atomic)
    );
  }

Clang 编译器不支持锁定前缀(还没有?)。我现在该怎么办?

【问题讨论】:

    标签: c++ assembly inline-assembly clang


    【解决方案1】:

    为什么不使用内置...?

    static inlint void inc(int64_t* atomic) {
       __sync_add_and_fetch_8(atomic, 1);
    }
    

    【讨论】:

      【解决方案2】:

      集成的汇编器不理解还不是单独语句的前缀。作为一种解决方法,您也可以只添加一个';' “锁定”之后。但正如其他评论指出的那样,您最好尽可能使用内置插件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        • 2020-09-30
        相关资源
        最近更新 更多