MIPS 명령어 - I타입

Posted by 춘자 ComputerStructure : 2010.05.05 23:11

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)

이번에는 I타입의 명령어 format에 대해서 알아보도록 하겠다.
I타입은 R타입과 다르다는 것을 알 수 있다. immediate 라는 부분이 생겼는데 이부분에는 무슨 값이 들어 갈까?

정답부터 말하자면 바로 상수 이다.
즉 16비트로 만들 수 있는 상수가 들어가는 것이다.
이렇게 직접적으로 상수가 들어가면 어떤 점이 좋을까? 아무래도 레지스터를 액세스 하지 않아도 되니 명령어의 처리 속도가 더
빨라질 것이다.

그리고 I타입이 쓰이는 가장 중요한 이유는 바로 이것이다!!!
레지스터가 아닌 메모리에 접근하여 어떤 값을 가져오거나 저장할 때 반드시 필요하다
즉  직접적으로 주소값(=상수) 이 immediate 부분에 와야 될것이다.

그런데 한가지 문제점이 발생했다~!
16비트만 가지고는 우리의 메모리 주소를 전부 다 표현 할 수는 없다는 것이다.

그렇다면 어떻게 해야 될까?

여기서 사용하는 방식이 바로 Displacement Addressing( 변위 주소 지정방식 )   이다.

rs가 가리키는 레지스터는 4바이트이기 때문에 4기가바이트의 모든 주소에 접근할 수 가 있다.
그렇기 때문에 rs가 가리키는 레지스터의 값( = 주소 ) 을 기준으로 해서 immediate의 16비트로 표현할 수 있는 주소만큼 증가하거나 감소하는 등의
변화를 줄 수 있다.


아............................................... 이해가 안가지 않나?
역시 어셈블리어 코드를 봐야 이해가 갈것이다.

int 형의 배열이 있다.
Array[2] =  Temp + Array[4];

이러한 코드를 어셈블리어 코드로 변경해 보겠다.

lw $r8, 16($r18)   // $r18은 Array[0]이라고 가정함
add $r8, $r16, $r8  // $r16은 Temp라고 가정함
sw $r8, 8($r18)

lw는 Load
sw는 Store
의 역할을 한다.

16($r18)가 의미하는 것은 $r18에 있는 주소값을 기준으로 16바이트를 더한 주소 값을 말한다.

어떤가? 위에서 설명한 변위 주소 지정 방식의 정의와 어감이 비슷하지 않나?
그렇다. 결국 코드를 예로 들었을 때 배열 같은 경우가 I타입의 명령어를 사용한다.

자, 이제 마지막으로 I타입 명령어 Format 에 어셈블리 코드를 매칭 시켜보자!
lw $r8, 16($r18)

 opcode  rs rt  immediate 
 35  18  8  16

rs는 기준이 되는 레지스터, rt는 타겟 레지스터, immediate는 상수가 됩니다.

여기서 끝내고 싶지만... 한가지 제가 말 안한 사실이 있네요
바로  $r0 레지스터입니다.
addi $r18, $r0, 10

이 코드는 무슨일을 하는 I타입 명령어 일까요?
제로 레지스터에 있는 값과 10을 더해서 18번 레지스터에 결과 값을 넣어주는 코드입니다.

그런데 제로 레지스터는 무슨 값을 넣어줘도 무조건 0입니다.

즉 위 코드는 특정 레지스터에 어떤 상수 값을 넣어주는 코드가 되는겁니다.
인텔 cpu라면 mov 의 역할을 하게 되는 겁니다.







'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 ··· 53 54 55 56 57 58 59 60 61 ··· 98  다음»