명령어 (11) - 논리 연산

컴퓨터구조

2020. 4. 8. 14:57

0. Logical Operation

[그림] Logical Operation의 종류

 

1. Shift Operation (shift left logical, shift right logical)

 

[그림] R format instruction

  • 앞서 살펴보았던 R format instruction을 사용함.
  • shamt의 값만큼 데이터를 shift함.
  • sll (shift left logical) : 왼쪽으로 쉬프트함, 한 칸에 2만큼 곱해지며 새 공간은 0으로 채움
  • srl (shift right logical) : 오른쪽으로 쉬프트함, 한칸에 2만큼 나눠지며 새 공간은 0으로 채움
  • srl은 unsigned number에서만 가능함. (부호비트가 오른쪽으로 움직여지면 부호가 바뀌어버림)

 

// C Code : 
i = j << 2;

// MIPS Code :
sll $t0, $t1, 2
  • opcode는 special(0), rs는 사용되지 않고, rt는 t1, rd는 t0, shamt는 2, funct는 sll이다.

 

2. And Operation (and, andi)

and는 R format으로 우리가 흔히 알고 있는 Bitwise And연산이 맞다. andi의 경우 and의 immediate 버전이다. (당연히 I foramt이다)

 

[그림] and 연산

  • 어떤 특정비트의 값을 뽑아낼때 and연산을 많이 사용한다.
  • 예를 들어 0011 0101이라는 데이터가 있을 때 하위 네비트에서만 데이터를 뽑고 싶으면
  • 0011 0101 and 0000 1111을 사용하면 0000 0101로 하위 4비트만 뽑아져 나온다.

 

3. Or Operation (or, ori)

or 역시 R format으로 우리가 흔히 알고 있는 Bitwise Or 연산이 맞다. ori의 경우 or의 immediate 버전이다 (당연히 I format이다)

 

[그림] or 연산

  • 특정 비트들을 전부 1로 만들고 싶을 때 사용한다.
  • 예를 들어 0101 0001에서 뒤쪽 4비트를 전부 1로 만들고 싶으면
  • 0101 0001 or 0000 1111을 사용하면 0101 1111로 뒤쪽 비트가 전부 1로 켜진다.

 

4. Not Operation (nor로 구현)

Not연산은 조금 특이한데 not이라는 명령어를 사용하지 않고 nor이라는 명령어 (not or)을 사용하여 구현한다. 

 

[그림] not 연산

  • t1 or zero = t1 그대로가 된다. 그리고 여기에 not 연산을 취하면 not t1이 된다.
  • not은 하나의 레지스터 오퍼랜드만 필요하지만, 규칙성을 맞춰야하기 때문에 이런식으로 구현되었다.
  • 즉, not(t1 or zero) = not(t1)과 같기 때문에 R format에서 not을 사용할 수 있는 것이다.
  • Simplicity favors regularity! (규칙성을 통해 단순하게)
  • good design demands good compromise! (좋은디자인은 어느정도 타협을 요구함)

 

5. Reference

 

컴퓨터구조

이 과목에서는 컴퓨터 시스템의 구성, 동작원리와 설계를 다룬다. 특히 컴퓨터 성능, 명령집합, 제어와 마이크로프로그래밍, 파이프라인, 정수와 부동 소수점수 연산, 기억부 시스템, 입출력 부시스템, 고급 컴퓨터구조 등과 같은 내용에 중점을 둔다. 교과목을 통해 고속 Data Network 시스템에 들어가는 여러 Processors를 이해하고, 이들을 설계 또는 Programming 할 수 있는 능력을 배양한다.

www.kocw.net

'컴퓨터구조' 카테고리의 다른 글

명령어 (14) - 프로시져 / 함수 (1)  (1) 2020.05.01
명령어 (13) - 대소 비교 (<)  (0) 2020.04.08
명령어 (12) - 조건 연산, J Format  (0) 2020.04.08
명령어 (10) - 주소 지정  (0) 2020.04.08
명령어 (9) - I Format  (0) 2020.04.08
명령어 (8) - R Format  (0) 2020.04.08
명령어 (7) - 이진 표현법  (0) 2020.04.08