逻辑左移
MIPS
// $t2 = $s0 << 4
sll $t2, $s0, 4
指令:
000000 00000 10000 01010 00100 000000
逻辑右移
MIPS
// $t2 = $s0 >> 4
srl $t2, $s0, 4
指令:
000000 00000 10000 01010 00100 000010
按位与
MIPS
// $t0 = $t1 & $t2
and $t0, $t1, $t2
指令:
000000 01001 01010 01000 00000 100100
按位或
MIPS
// $t0 = $t1 | $t2
or $t0, $t1, $t2
指令:
000000 01001 01010 01000 00000 100101
按位取反
为了保持三个操作数的格式,MIPS采用或非指令。当其中一个操作数为0($zero寄存器)
时,即可实现取反的操作:
| A | 0 | A或0 | A或非0 |
| :--: | :--: | :--: | :--: |
| 1 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 |
MIPS
// $t0 = ~ ($t1 | $t2)
nor $t0, $t1, $t2
指令:
000000 01001 01010 01000 00000 100111