MIPS Logical Instructions

hello_hidi·2022년 10월 3일
0

Computer Architecture

목록 보기
4/8
post-thumbnail

Logical Instructions

1. bitwise logical operation

비트마다 비교하는 연산자

이름기능종류
Bit-by-bit AND비트마다 and연산and, andi
Bit-by-bit OR비트마다 or연산or
Bit-by-bit NOT비트마다 not 연산nor
Shift left비트를 왼쪽으로 옮김sll
shift right비트를 오른쪽으로 옮김srl

2. and, andi

이름기능형식
and레지스터의 각 비트마다 and 연산을 한다and $t0, $t1, $t2
andi레지스터와 상수(2진수변환) 각 비트마다 and 연산을 한다and $t0, $t1, 10

A andi -1(0XFFFFFFFF) => A

	1010 1010 1001 1000 1000 1011 1111 1000
AND	1111 1111 1111 1111 1111 1111 1111 1111
--------------------------------------------
	1010 1010 1001 1000 1000 1011 1111 1000	

3. or, ori

이름기능형식
or레지스터의 각 비트마다 or 연산을 한다or $t0, $t1, $t2
ori레지스터와 상수(2진수변환) 각 비트마다 or 연산을 한다or $t0, $t1, 10

A ori 0(0XFFFFFFFF) => A

	1010 1010 1001 1000 1000 1011 1111 1000
OR	0000 0000 0000 0000 0000 0000 0000 0000
--------------------------------------------
	1010 1010 1001 1000 1000 1011 1111 1000	

4. nor

: OR + NOT

nori는 없다

이름기능형식
nor비트마다 OR연산을 한것에 NOT연산을 한다nor $t1, $t2, $t3

> NOT연산자가 없는 이유! : 자기 자신과 nor 하거나 0과 nor하면 된다
NOR $t7 $t1, $t1

	1010 1010 1001 1000 1000 1011 1111 1000
OR	1010 1010 1001 1000 1000 1011 1111 1000
--------------------------------------------
	1010 1010 1001 1000 1000 1011 1111 1000
NOT    
--------------------------------------------
	0101 0101 0110 0111 0111 0100 0000 0111 (not $t1)

5. sll, srl

이름기능형식
sll왼쪽으로 i bits만큼 shift한다
2^i만큼 곱한다.
sll $t2, $s0, 4
srl오른쪽으로 i bits만큼 shift한다
2^i만큼 나눈다.
srl $t2, $s0, 3

sll로 인해 생기는 LSB 빈자리엔 0을 채우고,
srl로 인해 생기는 MSB 빈자리는 없어진다!

6. 예시코드

.text
.globl main

main:
    addi $t1, $0, 0x3c00
    addi $t2, $0, 0x0DC0

    and $t0, $t1, $t2
    andi $t3, $t1, -1 # $t3 = $t1

    or $t4, $t1, $t2
    ori $t5, $t1, 0 # $t5 = $t1

    nor $t6, $t1, $t2
    nor $t7, $t1, $t1 # $t7 = not $t1

    ori $s0, $0, 9 # $s0 = 9
    sll $t2, $s0, 4 # $t2 = $s0 * 2^4
    srl $t4, $t2, 2 # $t4 = $t2 / 2^2

profile
안뇽희디

0개의 댓글