用于位测试和设置的组件(BTS)

时间:2014-04-09 21:34:17

标签: c gcc assembly

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

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

修改

我想盲目地设置这一点而不关心它是否先前设置

我可以使用汇编代码按照Using bts assembly instruction with gcc compiler

中的建议完成此操作

但是我可以使用哪种内在可以跨不同架构移植?

例如,gcc Atomic Builtins__sync_fetch_and_or。这是否与BTS具有相同的属性?

1 个答案:

答案 0 :(得分:2)

对于某个位的盲设置,sync_fetch_and_orsync_or_and_fetch似乎都同样好,结果被丢弃,编译器知道优化它。 在x86上,gcc不会使用bts,而只会执行lock or,这应该没问题。