MIPS 명령어 - R타입

Posted by 춘자 ComputerStructure : 2010.05.05 22:02
MIPS 명령어는 총 3가지 타입이 있다.

Type -31-                                 format (bits)                                 -0-
R opcode (6) rs (5) rt (5) rd (5) shamt (5) funct (6)
I opcode (6) rs (5) rt (5) immediate (16)
J opcode (6) address (26)

바로 R타입과 I타입 그리고 마지막으로 J타입이다.
지금 필자가 글을 쓰면서 박혜경의 A Lover`s Concerto 라는 노래를 듣고 있다. 참 좋다. 다들 지금 집중이 안된다면 이 음악을
들으면서 공부하기를 추천한다.

저 세가지 타입이란 무엇인가?
바로 우리가 궁금해 했던 컴퓨터 명령어다. 프로그램은 결국 여러 명령어로 구성되어 있고 CPU는 명령어를 한개씩 불러와 연산을 수행한다.
그런데 명령어가 총 세가지 형태가 존재한다는 것이다.

우리는 현재 MIPS 명령어에 대해서 공부를 하고 있다. MIPS는 32비트 기반의 CPU이고 명령어도 32비트로 구성되어 있다.
자, 그렇다면 세가지 타입의 명령어에 대해서 하나 하나 알아보도록 하자.

(1) R타입 인스트럭션( 명령어 )

지금부터 인스트럭션이란 말대신 명령어란 말을 쓰겠다. 한글을 사랑하는 마음과 글자 수가 더 적은 이유에서다.
기본적으로 R타입 명령어는 두개의 오퍼랜드(피연산자)를 가지는 레지스터 2개와 연산 결과를 저장하는 타겟 레지스터까지 총 3개의 레지스터를 가리킬 수 있어야 한다.
위에 표를 보면 R 타입 명령어의 format이 나와 있다. opcode, rs, rt, rd, shamt, funct....................등등 요상한 말들이 써 있는 걸 볼 수 있을 것이다.
간단 명료하게 무엇인지 요약해 보겠다. 참고로 가로 안에 들어있는 수는 바로 비트의 수를 의미한다. 난 정말 친절한 거 같다.

opcode : funct와 함께 명령어의 종류를 나타낸다.
rs : 첫번째 오퍼랜드(피연산자) 값이 들어가 있는  레지스터의 주소를 담고 있는 부분이다.
rt :  두번째 오퍼랜드(피연산자)  값이 들어가 있는  레지스터의 주소를 담고 있는 부분이다.
rd : 두개의 피연산자의 값을 연산하여 얻은 결과를 저장하기 위한 레지스터의 주소를 담고 있는 부분이다.
shamt : shift 명령어에서 Shift 양을 나타내는 부분이다. ( 다른 명령어에서는 항상 0 이다. )
funct : opcode와 함께 명령어의 종류를 나타낸다.


간단한  어셈블리어 코드를 보도록 하자.

add $r16, $r8, $r9 ( r8에 담겨 있는 값과 r9에 담겨 있는 값을 더하여 r16에 저장하라는 것이다. )
$r16이라는 레지스터는  rd에 저장되고
$r8과 $r9 라는 레지스터는 rs, rt에 저장된다.

R타입 명령어에서는 opcode 부분의 값은 0이고 정확한 더하기, 빼기등의 명령은 funct에 기록이 된다.
32비트 길이의 명령어에 있어서 R타입 같은 경우는 I타입이나 J타입보다는 훨씬 더 여유가 있기 때문에 이렇게 설계가 된 것이라고 말할 수 있다.

이제 R타입 명령어를 마무리 하도록 하자.
add $r16, $r8, $r9
이 코드가 실제 R타입 명령어에 어떻게 매핑 될까?

 0  8 9 16  0  32
 opcode  rs  rt  rd  shamt  funct

바로 이것이 정답이다.
실제로 컴퓨터 내부에서는 이진수로 표현 될것이다.
십진수를 이진수로 바꾸는 건 여러분 몫으로 남기겠다.





'ComputerStructure' 카테고리의 다른 글

MIPS 명령어 - J타입  (5) 2010.05.06
MIPS 명령어 - I타입  (3) 2010.05.05
MIPS 명령어 - R타입  (4) 2010.05.05
MIPS 레지스터  (0) 2010.05.05
CISC VS RISC  (0) 2010.04.18
주소 지정 방식  (1) 2010.04.18

댓글을 달아 주세요

  1. 2013.10.25 13:42 비상  댓글주소  수정/삭제  댓글쓰기

    잘 보고 갑니다.

  2. 2013.10.29 21:03 신고 춘자  댓글주소  수정/삭제  댓글쓰기

    네. 감사합니다.^^

  3. 2014.09.21 17:56 민성  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다.

  4. 2015.03.23 15:13 굿  댓글주소  수정/삭제  댓글쓰기

    정말 쉽게 설명하시네요
    다음 내용도 부탁드립니다

 «이전 1 ··· 54 55 56 57 58 59 60 61 62 ··· 98  다음»