c-原子位测试和设置(BTS)的内在组装



struct node* address; //format <addr,flagBit1,flagBit2>

我想使用BTS来原子地设置flagBit1位。

编辑

我想盲目地设置这个位,而不关心它是否是以前设置的

我可以使用汇编代码来完成这项工作,如在使用gcc编译器的bts汇编指令中所建议的那样

但是,有没有一种内在的东西可以在不同的体系结构中使用?

例如,gcc Atomic Builtins具有__sync_fetch_and_or。这和BTS有相同的属性吗?

对于一个位的盲设置,sync_fetch_and_orsync_or_and_fetch似乎都一样好,结果被丢弃,编译器知道要优化它。在x86上,gcc不会使用bts,而是简单地执行lock or,这应该很好。

相关内容

  • 没有找到相关文章

最新更新