Consider a new instruction named branch-on-bit-set (mnemonic bbs). The instruction “bbs reg, pos, label” jumps to label if bit in position pos of register operand reg is one. A register is $32$ -bits wide and the bits are numbered $0$ to $31,$ bit in position $0$ being the least significant. Consider the following emulation of this instruction on a processor that does not have bbs implemented.
$temp\leftarrow reg \& mask$
Branch to label if temp is non-zero. The variable temp is a temporary register. For correct emulation, the variable mask must be generated by
- $ mask\leftarrow \text{0x1} << pos$
- $ mask\leftarrow \text{0xffffffff} << pos$
- $ mask\leftarrow pos $
- $ mask\leftarrow \text{0xf}$