Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

보근은 참고 있다

2.6 논리연산 명령어 본문

CS/컴퓨터 구조

2.6 논리연산 명령어

보근 2020. 10. 14. 22:17

 

 

 

 

 

 

 초기의 컴퓨터는 워드 전체를 처리하는 데에만 관심을 가졌으나, 워드 내의 일부 비트들을 처리하는 것에 필요성을 느꼈다. 그로인해 비트들을 워드로 묶는 packing 작업과 워드를 비트 단위로 나누는 unpacking 작업을 하는 명령어들이 생겨났다.

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 MIPS에는 이러한 논리연산 명령어가 7가지가 있는데, ① sll ② srl ③ and ④ or ⑤ not ⑥ nor ⑦ xor 들이다.

 

 

 

 

 

① sll (Shift Left Logical)② srl (Shift Right Logical) 명령어는 자리이동(shift) 명령어로 워드 내의 모든 비트를 한 방향으로 밀고 비는 자리는 적절하게 채운다.

 

① sll은 비트를 왼쪽으로 밀고, 빈 칸을 0으로 채운다.

② srl은 비트를 오른쪽으로 밀고, 빈 칸은 기존의 MSB로 채운다.

 

ex) sll $t0, $s0, 4 // $s0의 비트를 왼쪽으로 4칸 밀고 그 값을 $t0에 저장

op rs rt rd shamt funct
0 0 16 8 4 0
  • 위의 예시로 든 명령어는 아래의 표와 같은 형태로 전송된다. (shamt에 shift한 만큼 값이 들어간다.) 
  • 왼쪽으로 밀면 비는 오른쪽 자리는 0으로 채워지지만, 오른쪽으로 밀면 비는 왼쪽 자리는 부호값으로 채운다.(부호 확장)
  • 숫자 a를 왼쪽으로 i번 shift하면 a * 2^i , 오른쪽으로 i번 shift하면 a * 2^-i 가 결과값이 된다.

 

 

 

 

 

 

③ and ④ or, ⑤ not 명령어들은 비트 대 비트(bit by bit) 명령어로 피연산자로 두 개의 비트가 필요하다.

 

③ and는 두 비트가 모두 1인 경우에 결과가 1 나머지는 0,

④ or는 두 비트 중 하나 이상이 1이라면 결과가 1 둘 다 0이라면 0,

⑤ not은 1인 비트는 0, 0인 비트는 1로 결과가 바뀐다.

 

ex) and $t0, $s0, $s1

     or $t0, $s0, $s2

     nor $t0, $s0, 0    // not 연산

 

  • MIPS의 경우 '간단한 것을 위해 규칙적으로'의 규칙을 지키기 위해 3개의 피연산자 형식을 지키기 위해 피연산자가 2개 쓰이는 NOT 연산자 대신 피연산자가 3개인 NOR 연산자를 사용해서 NOT을 구현했다.
  • AND 연산자를 이용하면 어떤 워드 내의 원하는 자리의 원하는 비트 수만큼 구할 수 있다. (mask)
  • AND와 OR의 경우 상수를 이용하면 유용하기 때문에 immediate 명령어도 제공된다. (andi, ori)

 

 

 

 

 

마지막으로 ⑥ nor(not or) ⑦ xor(exclusive or)가 있다.

 

⑥ nor는 두 비트의 or 연산 후 결과값에 not 연산을 한 것,

⑦ xor는 두 비트가 서로 다르다면 결과가 1, 같다면 0이다.

 

ex) nor $t0, $s0, $s1

     xor $t0, $s0, $s1

 

 

 

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

2.8 하드웨어의 프로시저 지원  (0) 2020.10.14
2.7 판단을 위한 명령어  (0) 2020.10.14
2.5 명령어의 컴퓨터 내부 표현  (0) 2020.10.14
2.4 부호있는 수와 부호없는 수  (0) 2020.10.14
2.3 피연산자  (0) 2020.10.14
Comments