컴퓨터 구조

컴퓨터 구조 (04)

cheesecrust1008 2022. 9. 16. 16:28

R format, I format 과 out of range 

 

representation of a program 의 순서는

이는 high - level language 을 assembly - language 로 그리고 이를 hardware representation으로 나타내는 순서이다.

 

assembly - language는 우리가 앞서서 배운 add $t1, $t2, $t3 와 같운 것이다. 

 

이제 assembly language 를 hardware represetation으로 나타내는 format 을 알아보자

1.  r format

위는 r format의 구성요소이다. 레지스터의 값들과 shift하는 숫자는 5bit 볼 수있다. 

그 이유는 레지스터가 전체 32개 이기때문에 register은 5bit 이면 충분하고, 각각의 레지스터는 32bit, 32 자리이기 때문에 5bit 만 있으면 32개를 표현할 수 있다.

 

이 format을 사용하는 명령어는 add, sub 등 레지스터 끼리의 연산을 나타내는 명령어들에서 사용된다. 

 

이때의 register 순서는 아래의 그림과 같다.

 

앞 뒤의 명령어는 op funct에서 나타내는데, 이는 mips opcode map을 참고해서 나타낸다.

 

2. i format

 

i format 의 경우는 다음과 같다. 

 

이 format을 사용하는 경우는 addi나 subi 등 상수 operand 를 사용하는 경우이다.

이때의 상수 operand는 16bit자리에 들어가게 된다.

 

하지만 이떄에 상수 operand 가 16bit 로 표현되기 때문에 계산을 할떄에 32bit 수와 계산하게 되는데, 이때에 빈 곳들을 채워야 한다.

 

이를 채우는 방법은 계산이 무엇인가에 따라 다르다. addi, subi와 같이 산술 연산인 경우에는 음수인지 양수인지를 판별해야 하므로 signed extension으로 채우게 된다. signed extension 이란, 16 bit맨 앞자리가 1이면 쭉 1로 채우고 0이라면 0으로 쭉 채운다. 

 

논리 연산인 경우에는 16비트수의 앞자리가 무엇이든지 그냥 0으로 채운다. 이를 unsigned extension 이라고 한다. 

 

위의 개념에서 out of range의 이유를 찾을 수 있는데, addi 로 계산을 할 경우에, 상수가 16bit담기게 된다. 따라서 이의 범위는 -32768 ~ 32767이 된다. 그리고 ori 으로 계산을 할 경우에는 0 ~ 65535가 된다. 둘의 범위는 16진수로 나타내었을 때는 같게 된다. 그 이유는 ori 는 논리 연산으로 음수 양수를 구분하지 않기 떄문이다. 

 

또한 이 상수 operend를 몇진수로 썻는지에 따라서도 다르다 16진수로 쓰는 경우는 unsigned 로 생각하고 십진수일 경우에는 signed 로 생각한다 . 

 

따라서 예를 들어 addi $t1, $0, 0x8000 일 경우에는 00008000 + 0 이 $t1에 들어가게 된다. 

하지만 00008000은 +32768로 범위를 넘어서기 때문에 addi 가 lui, ori 로 나누어 진다. 여기에서 lui란 load upper immediate로 16진수 4자리를 앞으로 옮기고 뒤 4자리를 0으로 채운다. 이때에 1번 레지스터를 잠시 사용하게 된다.

 

li 이는 레지스터에 원하는 상수를 대입하는 명령이다. 

 

sw, lw

 

sw 명령어는 stored word로 register에서 memory로 값을 옮기는 명령어이다. 

 

lw 명령어는 load word 로 memory 에서 register로 값을 가져오는 명령어이다. 

 

이들은 sw $t3, 5($t4) 이런식으로 사용하는데, 이 의미는 $t3의 값을 $t4에 저장 된값의 5만큼 더한 메모리의 주소에 저장하는 의미이다.

 

 

 

 

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

컴퓨터 구조(06)  (1) 2022.09.23
컴퓨터 구조(05)  (0) 2022.09.20
컴퓨터 구조 (03)  (1) 2022.09.16
컴퓨터 구조 (02)  (0) 2022.09.14
spim 활용  (0) 2022.09.13