์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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
- ์๋ฐ ๊ธฐ์ด
- Python
- ์ค๋ผํดDB
- Database
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ์ฐ๋ถํฌ
- Rust
- ์๋ฐ
- ๋ฌ์คํธ
- ์ค๋ผํด
- OS
- ๋ฐฑ์ค
- ๋ฐ์ดํฐ ํต์
- ์ด์์ฒด์
- Python challenge
- ๋ฐฑ์ค ๋ฌ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- data communication
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Reversing
- ubuntu
- ํ์ด์ฌ
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- C
- Operating System
- ์๋ฐ ๊ฐ๋
- java
- ๋ฌ์คํธ ์์
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
Archives
- Today
- Total
IT’s Portfolio
[System] The Elements of Computing System - 4 ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ป The Elements of Computing System - 4
๐ค ๊ธฐ๊ณ์ด
- ํ๋ก์ธ์์ ๋ ์ง์คํฐ๋ค์ ์ด์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์กฐ์ํ ์ ์๋๋ก ๋ฏธ๋ฆฌ ์ ์๋ ๊ท์น
- ๋์ ํ๋์จ์ด ํ๋ซํผ์์ ์ง์ ๋ช ๋ น ์คํ ๋ฐ ํ๋์จ์ด ์์ ์ ์ด๊ฐ ๋ชฉ์
- ๋ฉ๋ชจ๋ฆฌ : ์ปดํจํฐ์์ ๋ฐ์ดํฐ์ ๋ช ๋ น์ด๋ฅผ ์ ์ฅํ๋ ํ๋์จ์ด ์ฅ์น
- ํ๋ก์ธ์ : CPU๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ๋ก์ธ์๋ ๋ฏธ๋ฆฌ ์ ํด์ง ๊ธฐ์ด ์ฐ์ฐ๋ค์ ์ํํ๋ ์ฅ์น
- ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ง์คํฐ์ ์๋ 2์ง ๊ฐ์ ํผ์ฐ์ฐ์๋ก ๋๊ณ , ์ฐ์ฐ์ ์ถ๋ ฅ๊ฐ์ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ ์ง์คํฐ์ ์ ์ฅ๋จ
- ๋ ์ง์คํฐ : ํญ์ CPU์ ๊ฑฐ๋ฆฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ์๋ ์๊ฐ์ด ์๋์ ์ผ๋ก ๋ง์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ํ๋ก์ธ์๋ ๊ฐ์ ํ๋ ์ ์ฅํ ์ ์๋ ๋ ์ง์คํฐ๋ฅผ ๋ฐ๋ก ์์ ์ฌ๋ฌ ๊ฐ ๋๊ณ ์์
๐ค ์ธ์ด
- ๊ธฐ๊ณ์ด ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด๋ค์ 2์ง ์ฝ๋ํ ํ ๊ฒ
- ๊ธฐ๊ณ์ด๋ ๋ณดํต 2์ง ์ฝ๋์ ์ฐ์ฐ๊ธฐํธ๋ฅผ ๋ ๋ค ์ฌ์ฉํ๋๋ก ๋์ด ์์
- 16๋นํธ ์ปดํจํฐ ๋ช
๋ น :
1010 0011 0001 1001
- 4๋นํธ์ฉ 4๊ฐ์ ํ๋๋ก ๊ตฌ์ฑ
- ๋งจ ์ผ์ชฝ ํ๋๋ CPU ์ฐ์ฐ ์ข ๋ฅ, ๋๋จธ์ง๋ ํผ์ฐ์ฐ์
1010
์ ADD, ๋๋จธ์ง ํ๋๋ ๊ฐ๊ฐ R3, R1, R9 ์๋ฏธ
- ์ด์ ๋ธ๋ฆฌ ์ธ์ด or ์ด์ ๋ธ๋ฆฌ : ์ฐ์ฐ๊ธฐํธ๋ค์ ์ฌ์ฉํ ํ๊ธฐ๋ฒ
- ์ด์ ๋ธ๋ฌ : ์ด์ ๋ธ๋ฆฌ๋ฅผ 2์ง ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ณ์ญํ๋ ํ๋ก๊ทธ๋จ
๐ค ๋ช ๋ น
// R1, R2, R3๋ ๋ ์ง์คํฐ
ADD R2,R1,R3 // R2<-R1+R3
ADD R2,R1,foo // R2<-R1+foo, foo๋ ์ฌ์ฉ์ ์ ์ ์ด๋ฆ, foo๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ฐ์ ๋ปํจ
AND R1,R1,R2 // R1<-R1๊ณผ R2๋ฅผ ๋นํธ ๋จ์ And ์ฐ์ฐ ๊ฒฐ๊ณผ
- ์ฐ์ ๋ฐ ๋
ผ๋ฆฌ ์ฐ์ฐ
- ๋ชจ๋ ์ปดํจํฐ์๋ ๊ธฐ์ด ์ฐ์ ์ฐ์ฐ ์ธ์๋ ๋นํธ ๋ฐ์ , ๋นํธ ์ด๋ ๋ฑ์ ๋ถ์ฐ์ฐ, ๋ ผ๋ฆฌ ์ฐ์ฐ๋ ๊ฐ๋ฅํด์ผ ํจ
// ์ง์ ์ฃผ์ ์ง์ ๋ฐฉ์
LOAD R1,67 // R1<-Memory[67]
LOAD R1,bar // R1<-Memory[67], bar๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ 67์ ๊ฐ๋ฆฌํด
// ์ฆ์ ์ฃผ์ ์ง์ ๋ฐฉ์
LOAD R1,67 // R1<-67
// ๊ฐ์ ์ฃผ์ ์ง์ ๋ฐฉ์
// x=foo[j] or x=*(foo+j)
ADD R1,foo,j // R1<-foo+j
LOAD* R2,R1 // R2<-Memory[R1]
STR R2,x // x<-R2
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ฐ์ ๋ฐ ๋ ผ๋ฆฌ ๋ช ๋ น์ ์์ฐ์ค๋ฝ๊ฒ ํฌํจ๋์ด ์์
- ๋ ์ง์คํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋ ๋ก๋, ์ ์ฅ ๋ช ๋ น์ด ์์
// High
while(R1>=0) {
(1)...
}
(2)...
// Low
beginWhile:
JNG R1, endWhile // If R1<0 goto endWhile
(1)...
JMP beginWhile // goto beginWhile
endWhile:
(2)...
- ์ ์ด ํ๋ฆ
- ํ๋ก๊ทธ๋จ์ ๋ช ๋ น๋ค์ ๋ณดํต ์์๋๋ก ์คํ๋์ง๋ง, ๋ค๋ฅธ ์์น๋ก ๋ถ๊ธฐํด์ ์คํ๋๊ธฐ๋ ํจ
- ๋ฐ๋ณต, ์กฐ๊ฑด ์คํ, ์๋ธ๋ฃจํด ํธ์ถ ๋ฑ
๐ค ํต ๊ธฐ๊ณ์ด
- ๊ธฐ๋ณธ์ ์ผ๋ก ํต ์ปดํจํฐ๋ ํฐ ๋ ธ์ด๋ง ํ๋ซํผ์ด๊ณ CPU, ๋ช ๋ น์ด ๋ฉ๋ชจ๋ฆฌ, ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ๋งคํ I/O ์ฅ์น๋ก ๊ตฌ์ฑ๋ 16๋นํธ ์ฅ์น
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ
- ํต์์๋ ๋ช ๋ น์ด๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฃผ์ ๊ณต๊ฐ์ด ๋ถ๋ฆฌ๋์ด ์์
- ํญ์ด 16๋นํธ์ธ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๊ณต๊ฐ์ 15๋นํธ๋ก, ์ต๋ 32K๊ฐ์ 16๋นํธ ๋จ์ด๋ค์ ์ฃผ์๋ฅผ ํ ๋นํ ์ ์์
- ํต CPU๋ ๋ช ๋ น์ด ๋ฉ๋ชจ๋ฆฌ(ROM)์ ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ๋ง ์ํํ ์ ์์
- ๋ ์ง์คํฐ
- ํต ์์คํ
์๋ ๋ฐ์ดํฐ ๊ฐ๋ง์ ์ ์ฅํ๋ D ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ ๊ฐ๊ณผ ์ฃผ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ A 16๋นํธ ๋ ์ง์คํฐ๊ฐ ์์
- D=M+1์์ M์ ํญ์ A์ ์ ์ฅ๋ ๊ฐ์ ์ฃผ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ถ๊ธฐ๋ช ๋ น์ด์ ๋์ฐฉ ์์น๋ ํญ์ A์ ์ ์ฅ๋ ๊ฐ์ ๋ชฉ์ ์ง๋ก ํจ
- ํต ์์คํ
์๋ ๋ฐ์ดํฐ ๊ฐ๋ง์ ์ ์ฅํ๋ D ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ ๊ฐ๊ณผ ์ฃผ์ ๊ฐ์ ์ ์ฅํ ์ ์๋ A 16๋นํธ ๋ ์ง์คํฐ๊ฐ ์์
๐ค A-๋ช ๋ น์ด
- A ๋ ์ง์คํฐ์ 15๋นํธ ๊ฐ์ ์ค์ ํ๋ ๋ฐ ์ฐ์
- (1) ์์
- (2) ๋ฐ์ดํฐ ์ฃผ์
- (3) ์ ํํ ๋ช ๋ น์ด ์ฃผ์
- ์ฌ์ฉ๋ฒ :
@value
- value๋ ์์๊ฐ ์๋ 10์ง์, ๋๋ ๊ทธ ์ซ์๋ฅผ ์ฐธ์กฐํ๋ ๊ธฐํธ
๐ค C-๋ช ๋ น์ด
C-Command : dest = comp;jump
// dest๋ jump ํ๋๋ ๊ณต๋์ผ ์ ์์
// dest๊ฐ ๊ณต๋์ด๋ฉด '='๊ฐ ์๋ต๋จ
// jump๊ฐ ๊ณต๋์ด๋ฉด ';'๊ฐ ์๋ต๋จ
- ํต ํ๋ซํผ์์ ๊ฑฐ์ ๋ชจ๋ ์ผ์ ์ํํจ
- (1) ๋ฌด์์ ๊ณ์ฐ?
- (2) ๊ณ์ฐ๋ ๊ฐ์ ์ด๋์ ์ ์ฅ?
- (3) ๊ทธ ๋ค์ ํ ์ผ์ ๋ฌด์?
- ์ต์์ ๋นํธ ๊ฐ 1์ ์ด ๋ช
๋ น์ด๊ฐ C-๋ช
๋ น์ด์์ ๋ํ๋ด๋ ์ฝ๋
- ๊ทธ ๋ค์ ๋ ๋นํธ๋ ์ฌ์ฉ๋์ง ์์
- comp ํ๋ : ALU๊ฐ ํ ์ฐ์ฐ์ด ๋ฌด์์ธ์ง
- dest ํ๋ : ๊ณ์ฐ๋ ๊ฐ์ ์ด๋์ ์ ์ฅํ ์ง
- jump ํ๋ : ์ ํ ์กฐ๊ฑด
- ๊ณ์ฐ ํ๋
- ๊ณ์ฐ ํ๋์ a๋นํธ๋ A ๋ ์ง์คํฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ ์ค ์ด๋ ๊ฒ์ ๊ณ์ฐํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํด์ค
- ๋๋จธ์ง c1~6์ ์ด๋ค ๊ณ์ฐ์ ํ ์ง ๊ฒฐ์ (= ALU)
- ๋ชฉ์ ์ง ํ๋
- comp ๋ถ๋ถ์์ ๊ณ์ฐ๋ ๊ฐ์ ์ด๋์ ์ ์ฅํ ์ง๋ฅผ ๋ํ๋
- d1์ A ๋ ์ง์คํฐ, d2๋ D ๋ ์ง์คํฐ, d3๋ Memory[A]๋ฅผ ๋ด๋นํ๋๋ฐ, ํ์ฑํ๋ ๋นํธ๊ฐ ๋ด๋นํ๋ ์ฅ์์ ๊ฐ์ ์ ์ฅ
- ์ ํ ํ๋
- ๋ช ๋ น์ ์ํํ ์ปดํจํฐ๊ฐ ์ด์ ์ด๋ ์์น์ ๋ช ๋ น์ ์ํํ ์ง ๊ฒฐ์ ํจ
- ์ค์ ๋ก ์ ํํ ์ง๋ ALU์ ์ถ๋ ฅ๊ฐ์ ๋ฌ๋ ธ๋๋ฐ, ์ถ๋ ฅ๊ฐ์ด ์์๋ผ๋ฉด j1, 0์ด๋ผ๋ฉด j2, ์์๋ผ๋ฉด j3 ๋นํธ๋ฅผ ๋ณด๊ณ ์ ํ ์ฌ๋ถ ๊ฒฐ์
๐ค ๊ธฐํธ
- ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ ์์๋ ๊ธฐํธ๋ฅผ ์ด์ฉํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ฐธ์กฐ ๊ฐ๋ฅ
- ๋ฏธ๋ฆฌ ์ ์๋ ๊ธฐํธ
- ๊ฐ์ ๋ ์ง์คํฐ : R0 ~ R15๋ RAM ์ฃผ์ 0 ~ 15๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ ์ํจ
- ๋ฏธ๋ฆฌ ์ ์๋ ํฌ์ธํฐ : SP, LCL, ARG, THIS, THAT ๊ธฐํธ๋ ๊ฐ๊ฐ RAM ์ฃผ์ 0~4๋ฅผ ์ฐธ์กฐํ๋๋ก ์ ์ํจ
- ๊ฐ์๋จธ์ ๊ตฌํ ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋จ
- I/O ํฌ์ธํฐ : SCREEN๊ณผ KBD ๊ธฐํธ๋ ๊ฐ๊ฐ RAM ์ฃผ์ 16384(0x4000)๊ณผ 24576(0x6000)์ ์ฐธ์กฐํจ
- ์คํฌ๋ฆฐ ๋ฐ ํค๋ณด๋์ ๋ฉ๋ชจ๋ฆฌ ๋งคํ ์์ ์ฃผ์๊ฐ ๋จ
- ๋ ์ด๋ธ ๊ธฐํธ
- ๋ถ๊ธฐ ๋ช ๋ น์ด์ ๋ชฉ์ ์ง๋ฅผ ๋ํ๋
- ์ฌ์ฉ์๊ฐ '(XXX)' ๋ผ๋ ์์ฌ ๋ช ๋ น์ผ๋ก ์ง์ ์ ์ธํจ
- ๋ณ์ ๊ธฐํธ
- ์ด์ ๋ ๊ฐ์ง ๊ธฐํธ๊ฐ ๋ชจ๋ ์๋ ๊ฒฝ์ฐ
- ์ด์ ๋ธ๋ฌ๋ RAM ์ฃผ์ 16์์๋ถํฐ ์ฐจ๋ก๋๋ก ๋ณ์๋ง๋ค ์ ์ผํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํ ๋นํจ
๐ค I/O ์กฐ์
- ํต ํ๋ซํผ์ ํค๋ณด๋์ ์คํฌ๋ฆฐ ์ฅ์น์ ์ฐ๊ฒฐ๋ ์ ์์
- ๋ ์ฅ์น๋ ๋ฉ๋ชจ๋ฆฌ ๋งต์ ํตํด ์ปดํจํฐ์ ํต์ ํจ
- ํค๋ณด๋ ์ ๋ ฅ์ ํด๋น ๋ฉ๋ชจ๋ฆฌ ๋งต์ ์ ์ฅ๋๊ณ , ์คํฌ๋ฆฐ์ ํด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๊ฐ์ ์ฐ๋ฉด ๊ทธ์ ๋์ํ๋ ์คํฌ๋ฆฐ ์์ ํฝ์ ์ด ์ฐ์ฌ์ง
- ์คํฌ๋ฆฐ
- 512x256์ ํ๋ฐฑ ํฝ์ ๋ก ๊ตฌ์ฑ
- ์คํฌ๋ฆฐ ํฝ์ ์ RAM[16384]๋ถํฐ ์์ํ๋ 8K ๋ฉ๋ชจ๋ฆฌ ๋งต์ ๋์
- ๊ฐ ์ด๋ง๋ค 32๊ฐ์ 16๋นํธ ๋จ์ด๋ก ํํ๋จ
- ํค๋ณด๋
- RAM[24567]์ ์์นํ 1๋จ์ด ๋ฉ๋ชจ๋ฆฌ ๋งต์ ํตํด ํค๋ณด๋์ ํต์
- ์ค์ ํค๋ณด๋๊ฐ ๋๋ฆด ๋๋ง๋ค, ๋๋ฆฐ ํค์ 16๋นํธ ASCII ์ฝ๋๊ฐ ๊ธฐ๋ก๋๋ ์
- ํค๊ฐ ๋๋ฆฌ์ง ์๋ ๋์์๋ 0์ด ๊ธฐ๋ก๋จ
- RAM[24567]์ ์์นํ 1๋จ์ด ๋ฉ๋ชจ๋ฆฌ ๋งต์ ํตํด ํค๋ณด๋์ ํต์
๐ค ๋ช ๋ น์ด ์์
fn main() {
let (mut i, mut sum) = (1, 0);
while i<=100 {
sum+=i;
i+=1;
}
}
- Rust์ 1..100 ๋ง์
@i // i๋ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฐธ์กฐํจ
M=1 // i=1
@sum // sum์ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฐธ์กฐํจ
M=0 // sum=0
(LOOP)
@i
D=M // D=i
@100
D=D-A // D=i-100
@END
D;JGT // if(i-100)>0 goto END
@i
D=M // D=i
@sum
M=D+M // sum=sum+i
@i
M=M+1 // i=i+1
@LOOP
0;JMP // goto LOOP
(END)
@END
0;JMP // ๋ฌดํ๋ฃจํ(๋จ์ ์คํ ํ์ ์๋ชจ)
- ๊ธฐ๊ณ์ด์ 1..100 ๋ง์
๐ค ๊ณฑ์ ํ๋ก๊ทธ๋จ(Mult.asm)
// Multiplies R0 and R1 and stores the result in R2.
// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
//
// This program only needs to handle arguments that satisfy
// R0 >= 0, R1 >= 0, and R0*R1 < 32768.
@2
M=0 // R2๋ฅผ 0์ผ๋ก ์ด๊ธฐํ. R2์๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ
(LOOP)
@0
D=M // R0์ ๊ฐ์ D์ ์ ์ฅ. R0์ ๋ช๋ฒ ๊ณฑํ ์ง ๋จ์ ํ์๋ฅผ ๋ํ๋
@END
D;JEQ // D์ ๊ฐ์ด 0์ด ๋์๋ค๋ฉด ๊ณ์ฐ ์ข
๋ฃ
@1
D=M // R1์ ๊ฐ์ D์ ์ ์ฅ
@2
M=M+D // R2+=D
@0
M=M-1 // ๋จ์ ๊ณฑ์
ํ์ 1 ๊ฐ์
@LOOP
0;JMP // ๋ฌด์กฐ๊ฑด LOOP๋ก ์ ํ
(END)
@END
0;JMP
๐ค I/O ์กฐ์ ํ๋ก๊ทธ๋จ
// Runs an infinite loop that listens to the keyboard input.
// When a key is pressed (any key), the program blackens the screen,
// i.e. writes "black" in every pixel;
// the screen should remain fully black as long as the key is pressed.
// When no key is pressed, the program clears the screen, i.e. writes
// "white" in every pixel;
// the screen should remain fully clear as long as no key is pressed.
@i
M=0 // i=0 ์ด๊ธฐํ
(LOOP)
@KBD
D=M // ํ์ฌ ํค๋ณด๋์ ์
๋ ฅ๋ ๊ฐ์ D์ ๋์
@NOINPUT
D;JEQ // D==0 jump
@INPUT
D;JGT // D>0 jump
(NOINPUT)
@16384
D=A
@i // ํ์ฌ ์คํฌ๋ฆฐ ์์น -> A
D=D+M // 16384+i(1)
A=D
M=0 // ํ์ฌ ์คํฌ๋ฆฐ ์์น์ 0000 0000 0000 0000 ๋์
@END
0;JMP
(INPUT)
@16384
D=A
@i // ํ์ฌ ์คํฌ๋ฆฐ ์์น -> A
D=D+M
A=D
M=-1 // ํ์ฌ ์คํฌ๋ฆฐ ์์น์ 1111 1111 1111 1111 ๋์
@END
0;JMP
(END)
@i
M=M+1 // i=i+1
@LOOP
0;JMP // LOOP๋ก jump
728x90
๋ฐ์ํ
'Development Study > Rust' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Rust] Start Rust (Day 23) - More About Cargo and Crates.io (1) | 2023.11.25 |
---|---|
[Rust] Start Rust (Day 22) - Functional Language Features: Iterators and Closures (2) | 2023.11.20 |
[System] The Elements of Computing System - 3 (1) | 2023.11.08 |
[System] The Elements of Computing System - 2 (1) | 2023.11.04 |
[System] The Elements of Computing System - 1 (1) | 2023.10.31 |
Comments