3 ms·
NOT, at least in x86, is bitwise, so it won't do the right thing for values other than 0 and ~0 (-1).
by drv 14y ago
NOT, at least in x86, is bitwise, so it won't do the right thing for values other than 0 and ~0 (-1).
- pbsd 14y agoOh, I misunderstood. Thought it the point was to make it bitwise. In that case, it is very architecture-dependent. In x86, you can use TEST coupled with SETcc or CMOV for microarchitectures where branch mispredictions are very costly (P4 comes to mind). If not, and the result is not random, you're better off with a branch. Another trick is to use the carry flag, i.e., NEG reg; MOV reg, 0; ADC reg, 0. This works for all 386-compatible processors and is reasonably fast.