1. Caller & Callee
1-1) Caller(ํธ์ถํจ) & Callee(ํธ์ถ ๋นํจ) Image
โ ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด main() ํจ์์์ func() ํจ์๋ฅผ ํธ์ถํ์.
โ main() ํจ์๋ฅผ Caller๋ผ๊ณ ํ๊ณ func() ํจ์๋ฅผ Callee๋ผ๊ณ ํจ.
โ main() ํจ์๋ ์คํํ๋ฉด์ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํจ. ๊ทธ๋ฆฌ๊ณ func() ํจ์๊ฐ ๋ชจ๋ ์คํ๋๊ณ
โ ๋ค์ main() ํจ์๋ก ๋๋์์์ ๋ func()๊ฐ ํธ์ถ๋๊ธฐ ์ด์ ์ ๋ ์ง์คํฐ์ ๊ฐ์ ๊ฐ๊ณ ์์ด์ผ ํจ.
โ ์ด๋ Caller๊ฐ ์ ์ฅํ๊ณ ๋ณด์กด๋๋๋ก ์ ๊ฒฝ์จ์ผ ํ๋ ๋ ์ง์คํฐ๋ฅผ Caller-Saved-Register๋ผ๊ณ ํ๋ฉฐ
โ Callee๋ ์ด ๋ ์ง์คํฐ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์.
1-2) Caller-Saved-Register(์ฝ๋ฌ๊ฐ ์ ์ฅํ๋ ๋ ์ง์คํฐ)
Caller๊ฐ ์ฌ์ฉํ๊ธฐ ์ ๋ฐ๋์ ๋ฐฑ์ ํด์ผ ํ๋ ๋ ์ง์คํฐ,
Callee๋ ์ฌ์ฉ ๊ฐ๋ฅ ๊ฐ์ด ๋ณด์กด๋์ง ์์๋ ๋๋ ๊ฒฝ์ฐ๋ ๋ฐฑ์ ํ์ง ์์ ์ ์์.
ex) EAX, ECX, EDX
1-3) Callee-Saved-Register(์ฝ๋ฆฌ๊ฐ ์ ์ฅํ๋ ๋ ์ง์คํฐ)
Callee๊ฐ ์ฌ์ฉํ๊ธฐ ์ ๋ฐ๋์ ๋ฐฑ์ ํด์ผ ํ๋ ๋ ์ง์คํฐ, Caller๋ ์ฌ์ฉ๊ฐ๋ฅ.
Callee์ ์ ์ฅ์์๋ Caller๊ฐ ๋ฐฑ์ ์ ํ์๋ก ํ๋ ๋ ์ง์คํฐ๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์
๋ฌด์กฐ๊ฑด ๋ฐฑ์ ํด์ผ ํจ.
ex) EBX, ESI, EDI, EBP