컴퓨터시스템구조
[컴퓨터시스템구조] 07. MIPS 논리 연산자(sll, srl, and, or, nor)
파스텔코랄
2023. 10. 14. 14:30
논리 연산자
연산자 | C | MIPS |
Shift Left | << | sll |
Shift Right | >> | srl |
Bitwise AND | & | and, andi |
Bitwise OR | | | or, ori |
Bitwise NOT | ~ | nor |
Shift 연산자
R-포맷
op | rs | rt | rd | shamt | funct |
6비트 | 5비트 | 5비트 | 5비트 | 5비트 | 6비트 |
- shamt : 얼마나 많은 위치를 이동할지
- Shift left logical (sll)
- 왼쪽으로 시프트하고 0비트로 채운다.
- i만큼 sll하면 2^i 만큼 곱한다.
- Shift right logical (srl)
- 오른쪽으로 시프트하고 0비트로 채운다,.
- i만큼 srl하면 2^i 만큼 나눈다. (unsigned 일때만)
AND 연산자
- 단어의 비트를 마스크하는 데 유용
- 일부 비트를 선택하고 다른 비트를 0으로 지운다.
- 둘다 1일때만 1
AND 연산자 예제
and $t0, $t1, $t2
$t2 | 0000 0000 0000 0000 0000 1101 1100 0000 |
$t1 | 0000 0000 0000 0000 0011 1100 0000 0000 |
$t0 | 0000 0000 0000 0000 0000 1100 0000 0000 |
OR 연산자
- 단어에 비트를 포함하는 데 유용
- 일부 비트를 1로 설정하고 다른 비트는 변경하지 않고 그대로 둔다.
OR 연산자 예제
or $t0, $t1, $t2
$t2 | 0000 0000 0000 0000 0000 1101 1100 0000 |
$t1 | 0000 0000 0000 0000 0011 1100 0000 0000 |
$t0 | 0000 0000 0000 0000 0011 1101 1100 0000 |
NOR 연산자
- 단어의 비트를 반전시키는 데 유용
- 0을 1로, 1을 0으로 변경
- MIPS에는 NOR 3개 피연산자 명령어가 있다.
- a NOR b == NOT ( a OR b )
NOR 연산자 예제
nor $t0, $t1, $zero
$t1 | 0000 0000 0000 0000 0011 1100 0000 0000 |
$t0 | 1111 1111 1111 1111 1100 0011 1111 1111 |