일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ChatGPT
- 오블완
- 머신러닝
- 분류
- deep learning
- Machine Learning
- 해커톤
- LG Aimers
- LG Aimers 4th
- AI
- 딥러닝
- LG
- 지도학습
- regression
- 티스토리챌린지
- 회귀
- Classification
- OpenAI
- GPT-4
- gpt
- LLM
- PCA
- supervised learning
Archives
- Today
- Total
SYDev
[컴퓨터 구조] Lecture 11: Arithmetic for Computers 본문
경희대학교 김정욱 교수님의 컴퓨터 구조 강의 내용을 기반으로 한 정리글
Floating Point Instruction in MIPS
- 레지스터 테이블의 32개의 레지스터와는 별도의 floating point를 다루는 레지스터 $f0, $f1, $f2, .. .
- int register와 다르게 floating point register 0는 숫자를 포함할 수 있다.
single precision arithmetic instruction
- Addition - add.s
- Subtraction - sub.s
- Multiplication - mul.s
- Division - div.s
double precision arithmetic instruction
- Addition - add.d
- Subtraction - sub.d
- Multiplication - mul.d
- Division - div.d
Floating point comparison
- Format: c.x.s (Single precision), c.x.d (Double precision)
- x: equl(eq), not equl(neq), less than(lt), less than or equal (le), greater than (gt), greater than or equal (ge)
Floating point branch
- Branch, true (bc1t)
- Branch, false (bc1f)
Load and store
- load (lwc1)
- save (swc1)
MIPS floating point machine language
-> MIPS에는 floating point의 immediate 정의 X
Compiling MIPS Assembly C Code
MIPS floating point machine language - Example 1
-> Static data에 접근하기 위해서는 Global pointer($gp)를 이용해야 한다.
f2c:
lwc1 $f16, const5($gp)
lwc1 $f18, const9($gp)
div $f16, $f16, $f18
lwc1 $f18, const32($gp)
sub.s $f18, $f12, $f18
mul $f0, $f16, $f18
jr $ra
MIPS floating point machine language - Example 2
mm: ...
li $t1, 32
li $s0, 0
L1:
li $s1, 0
L2:
li $s2, 0
#[i][j] -> byte offset -> byte addressing
sll $t2, $s0, 5
addu $t2, $t2, $s1
sll $t2, $t2, 3
addu $t2, $a0, $t2
l.d $f4, 0($t2)
L3:
#b[k][j]
sll $t0, $s2, 5
addu $t0, $t0, $s1
sll $t0, $t0, 3
addu $t0, $a2, $t0
l.d $f16, 0($t0)
#a[i][k]
sll $t0, $s0, 5
addu $t0, $t0, $s2
sll $t0, $t0, 3
addu $t0, $a1, $t0
l.d $f18, 0($t0)
#저장할 값의 rValue
mul.d $f16,$f16, $f18
add.d $f4, $f4, $f16
addiu $s2, $s2, 1
bne $s2, $t1, L3
s.d $f4, 0($t2) #최종적으로 정해진 값 c[i][j]에 저장
addiu $s1, $s1, 1
bne $s1, $t1, L2
addiu $s0, $s0, 1
bne $s0, $t1, L1
...
'3학년 1학기 전공 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Lecture 13: The Processor - Part2 (0) | 2024.05.20 |
---|---|
[컴퓨터 구조] Lecture 12: The Processor (0) | 2024.05.05 |
[컴퓨터 구조] Lecture 10: Arithmetic for Computers (0) | 2024.04.19 |
[컴퓨터 구조] Lecture 09: Arithmetic for Computers (0) | 2024.04.13 |
[컴퓨터 구조] Lecture 08: Instructions - Language of the Computer (0) | 2024.04.13 |