논리 연산자
연산자 | 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 |
'컴퓨터시스템구조' 카테고리의 다른 글
[컴퓨터시스템구조] 09. MIPS 프로시저 호출(jal, jr) (1) | 2023.10.14 |
---|---|
[컴퓨터시스템구조] 08. MIPS 조건부 연산자(beq, bne, j, slt) (0) | 2023.10.14 |
[컴퓨터시스템구조] 06. MIPS 포맷(R-포맷, I-포맷) (1) | 2023.10.14 |
[컴퓨터시스템구조] 05. Signed, Unsigned, 2의 보수 (0) | 2023.10.14 |
[컴퓨터시스템구조] 04. MIPS 명령어(add, sub, addi, zero) (1) | 2023.10.13 |
댓글