-
[CS] ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๐ฅCS 2022. 1. 18. 00:24

Code (Text)
- ํ๋ก๊ทธ๋จ์ ์๋ ์ฝ๋๋ก, ํจ์, ์ ์ด๋ฌธ, ์์ ๋ฑ
ใ ค
Static data (Data)
- ์ ์ ๋ณ์ (global variables), ์์ ๋ฐฐ์ด (constant arrays), ๋ฌธ์์ด (strings)๊ณผ ๊ฐ์ ์ ์ ๋ณ์ (static variables)
- ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ data ์์ญ์ ์ ์ฅ๋๊ณ , ์ด๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ BSS (Block Stated Symbol) ์์ญ์ ์ ์ฅ๋๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ ์์ฑ๋๊ณ , ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๋ฉด ์์คํ
์ ๋ฐํ๋๋ค.
ใ ค
Heap
ํ ๋นํด์ผํ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๊ฒฐ์ ํด์ผํ๋ ๊ฒฝ์ฐ. (๋ฐํ์)
๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ. malloc, new ๋ช ๋ น์ผ๋ก ํ ๋น
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ฐ์ ์ํด์๋ง ์ฐธ์กฐ๋๊ณ ์ฌ์ฉ๋๋ ์์ญ
์๋ โ ์๋ก ์๋ผ๋๋ค. ์ฆ, ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ โ ๋์ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น ๋ฐ๋ ๊ฒ
import Foundation let num = 5 let arr = [Int](repeating: num, count: num) // ์ฌ๊ธฐ์ ๋ฐฐ์ด arr์ ํ ๋นํด์ผํ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๊ฒฐ์ ๋๋ค.
ใ ค
Stack
์คํ ์ฌ์ด์ฆ๊ฐ ์ปดํ์ผ ์์ ์ ๊ฒฐ์
๋ก์ปฌ ๊ฐ (local value), ๋ฐฐ์ด (array) ๊ทธ๋ฆฌ๊ณ ์์๋ก ์ ์ฅ๋ ๋ ์ง์คํฐ ๊ฐ
ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
ํจ์๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ง์ญ ๋ณ์, ๋งค๊ฐ๋ณ์์ ๋ฆฌํด ๊ฐ๋ฑ์ด ์์ธ๋ค.
์ โ ์๋๋ก ์๋ผ๋๋ค. ์ฆ, ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ โ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น ๋ฐ๋ ๊ฒ.
์๋ ์์๋ฅผ ๋ณด๋ฉด factorial(10)์ ํธ์ถํ์ ๊ฒฝ์ฐ, factorial(10)์๋ factorial(10)์ $fp, $sp๊ฐ ํ ๋น๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐจ๋ก๋๋ก factorial(9), factorial(8)... ์ ํธ์ถํ๋ฉด์ ์คํ ์์ญ์ ํ ๋นํ๋ค. ์ด ๋ factorial(9)์ $fp์๋ factorial(10)์ ๋ฆฌํด ์ฃผ์๊ฐ ํ ๋น๋๋ค. factorial(9)๊ฐ ๋ฆฌํด๋๋ฉด ๋์๊ฐ ๊ณณ์ ์ฃผ์๋ฅผ ์ ์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. factorial(1)๊น์ง ํธ์ถ์ ๋ค ํ๋ฉด, ์ฐจ๋ก๋๋ก ๋ค์ ๋ฆฌํด์ด ๋๋ฉด์ ์คํ์ ์๋ ์ํ๋ก ๋ณต์ํ๋ค.
func factorial(n: Int) -> Int { if n < 1 { return 1 } else { return n * factorial(n: n - 1) } } factorial(10) // ์ฌ๊ธฐ์ factorial(10) -> factorial(9) -> .. factorial(

$fp (frame pointer)
- ํ๋ ์์ ์์ ์ฃผ์
- ํญ์ ํ์ฌ ์คํ ํ๋ ์์ base (์์ ์์น)๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ฌ๊ธฐ์ return address๊ฐ ๋ค์ด๊ฐ๋ค.
- ์คํ ํ๋ ์์ ํ๋ก์์ ํ๋ ์, ํ์ฑํ ๋ ์ฝ๋๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
- $fp๋ $sp๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์ด๊ธฐํ๋๊ณ , $sp๋ return ์ $fp๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์๋๋ค.
ใ ค
$sp (stack pointer)
- ์คํ์ top์ ๊ฐ๋ฆฌํค๋๋ฐ, stack์ last word๋ฅผ ๊ฐ๋ฆฌํจ๋ค๊ณ ๋ ํ๋ค.
ใ ค
์ recursive ํจ์์ ๋น์ฉ์ด ๋น์ผ๊ฐ?
- ๋ชจ๋ ํ๋ก์ธ์ ์์ ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ์คํ์ ๋ณด๊ดํด๋๊ณ , ๋์ค์ ๋ค์ ๊ฐ์ ธ์ค๋ ์์ ์ด ๋น๋ฒํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ด ๋ง์ด ์ผ์ด๋์ ์ฑ๋ฅ์ด ๋์ด๋ ์ ์๋ค.
'๐ฅCS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ์ค์ผ์ค๋ง (0) 2022.01.24 - ํ๋ก๊ทธ๋จ์ ์๋ ์ฝ๋๋ก, ํจ์, ์ ์ด๋ฌธ, ์์ ๋ฑ