오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 문제풀기 2 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 문제풀기 2

쫑알bot 2023. 10. 12. 13:56
728x90

문제 1) 함수 안에 구현

어떤 상황일 땐 @

다른 상황일 떈 #으로 할 경우

→  slt로 0이나 1로 설정해주고, beq로 전개할 수 있다.

 

answer 

slt $t0, $a0, $a1                // a와 b를 비교하여 [ a가 크면 1, 아니면 0 ]을 t0에 넣는다. 

beq $t0, $zero,label          // t0에 들어가있는 게 0과 같으면 label로 넘어간다.

add $v0 ,$a1 , $zero         // return을 위한 v0에 a1을 넣는다. Move하는 기능임 그냥

j out                                   // 함수 탈출을 실행하는 곳으로 보냄 (아니면 label 진행됨)

 

label :

add $v0,$a0,$zero            // return을 위한 v0에 a0을 넣는다. Move하는 기능

 

out:

jr $ra                                  // 함수 탈출                

 

 


 

저 32bit에 대해서

 

a) Decimal일 때 

= 2^8 + 2^12 + 2^14 +2^20

 

b) MIPS inst일 때

= op : 000000 = 0 / rs : 00000= 0 / rt :10000= 16번째 register / rd : 01010 = 12번째 register /

            smt : 00100 = 4 /  function : 000000 = 0

 

- op code로 알 수 있는 거 : R-type임

- function code로 알 수 있는 거 : sll 임

 

따라서 위 코드는 sll $t0 , $s0 , 4 를 수행하는 명령어이다.

 

c) IEEE 754일 때를 나타내라

이건 뭐 예외 상황일 때를 보여주려고 만들었다고 하셨음.

 

* float point number 32비트로 옮길 때 ↔ 표현할 때 어떤 공식인지 공부하기

 


 

 

 


 

 


 

0.abc

일 때 a는 0.5 = 2^-1 

b는 0.25 = 2^-2

c는 0.125 = 2^-3을 나타낸다.

 

나같은 경우에는 주어진 수에서 0.5를 뺼 수 있냐? 가능하면 a자리에 1 아니면 0 이렇게 함.

 

그런 식으로 하면 0.625. 

 

교수님 같은 경우에는 

 

0.625 * 2 = 1.25    <정수 부분 = 1 이면 a에 1넣기, 소수 부분 가져와서 다음 단계에 쓰기

0.25 * 2   = 0.5      < 정수부분 =0 이니 b에 0넣기 , 소수 ""

0.5   * 2   = 1         < 정수부분 1 이니 c에 1넣고 , 나머지가 없으니 계산 끝

 

 

 

(출처) 

한동대학교 용환기 교수님 - 컴퓨터구조