오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 문제풀기 2 본문
문제 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넣고 , 나머지가 없으니 계산 끝
(출처)
한동대학교 용환기 교수님 - 컴퓨터구조
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 14. Datapath - Single Path (0) | 2023.10.24 |
---|---|
[ 컴퓨터 구조 ] 13. Floating Point number 2 (0) | 2023.10.15 |
[ 컴퓨터 구조 ] 12. Floating Point number (0) | 2023.10.09 |
[ 컴퓨터 구조 ] 11. DIVISION (0) | 2023.10.08 |
[ 컴퓨터 구조 ] 10. Multiplication (0) | 2023.10.08 |