【发布时间】:2017-01-09 23:55:32
【问题描述】:
根据bit twiddling hacks网站,操作
unsigned int a; // value to merge in non-masked bits
unsigned int b; // value to merge in masked bits
unsigned int mask; // 1 where bits from b should be selected; 0 where from a.
unsigned int r; // result of (a & ~mask) | (b & mask) goes here
r = a ^ ((a ^ b) & mask);
允许根据掩码合并两个位序列a 和b。我想知道:
- 此操作是否有特定/常用名称?
- 在某些指令集上是否存在此操作的特定汇编指令?
【问题讨论】:
-
“在某些指令集上是否存在用于此操作的特定汇编指令?” - 我不知道有任何没有的指令集 具有 AND 和 XOR 操作。
-
但也许有些架构在硬件中连接了此操作,以便在单个指令中完成此操作,而不是多个指令。
-
对于Ternary Raster Operations,这是一个相当标准的计算,所以是的,我假设有专用电路可用。
标签: c++ assembly merge bitmask instruction-set