ํจ์๋ฅผ ํธ์ถํ ๋ ์ผ์ ํ ๊ท์น์ด ์๋๋ฐ ์ด๋ฅผ ํจ์ํธ์ถ๊ท์ฝ ์ด๋ผ๊ณ ํ๋ค __cdecl, __stdcall, __fastcall ์ด ์ธ๊ฐ์ง๊ฐ ๋ํ์ ์ด๋ค. 1. __cdecl (C์ธ์ด์์ ๋ง๋ ํจ์ ํธ์ถ๊ท์ฝ) ํ๋ผ๋ฏธํฐ ์ ๋ฌ : ์ผ์ชฝ add esp, (์ ์ฒด ์คํ ํฌ๊ธฐ) ++ cdecl์์๋ ๊ฐ๋ณ์ธ์ ํจ์๊ฐ ์กด์ฌํ๊ณ ํ๋ผ๋ฏธํฐ ๊ฐ์์ ํ์ด ์๊ธฐ ๋๋ฌธ์ํจ์ ํธ์ถ์๊ฐ stack frame์ ์ ๋ฆฌํ๋ค 2. __stdcall (์๋์ฐ์์ ์ฌ์ฉํ๊ณ ์๋ ํจ์ ํธ์ถ๊ท์ฝ -winAPI๊ฐ ์ฌ์ฉ) ํ๋ผ๋ฏธํฐ ์ ๋ฌ: ์ผ์ชฝ ret 3. __fastcall (์ฑ๋ฅ์ ๊ทน๋ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ํจ์) ํ๋ผ๋ฏธํฐ ์ ๋ฌ: ์ผ์ชฝ
์ด์
๋ธ๋ฆฌ ํจ์ํธ์ถ๊ท์ฝ
ํจ์๋ฅผ ํธ์ถํ ๋ ์ผ์ ํ ๊ท์น์ด ์๋๋ฐ ์ด๋ฅผ ํจ์ํธ์ถ๊ท์ฝ ์ด๋ผ๊ณ ํ๋ค __cdecl, __stdcall, __fastcall ์ด ์ธ๊ฐ์ง๊ฐ ๋ํ์ ์ด๋ค. 1. __cdecl (C์ธ์ด์์ ๋ง๋ ํจ์ ํธ์ถ๊ท์ฝ) ํ๋ผ๋ฏธํฐ ์ ๋ฌ : ์ผ์ชฝ add esp, (์ ์ฒด ์คํ ํฌ๊ธฐ) ++ cdecl์์๋ ๊ฐ๋ณ์ธ์ ํจ์๊ฐ ์กด์ฌํ๊ณ ํ๋ผ๋ฏธํฐ ๊ฐ์์ ํ์ด ์๊ธฐ ๋๋ฌธ์ํจ์ ํธ์ถ์๊ฐ stack frame์ ์ ๋ฆฌํ๋ค 2. __stdcall (์๋์ฐ์์ ์ฌ์ฉํ๊ณ ์๋ ํจ์ ํธ์ถ๊ท์ฝ -winAPI๊ฐ ์ฌ์ฉ) ํ๋ผ๋ฏธํฐ ์ ๋ฌ: ์ผ์ชฝ ret 3. __fastcall (์ฑ๋ฅ์ ๊ทน๋ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ํจ์) ํ๋ผ๋ฏธํฐ ์ ๋ฌ: ์ผ์ชฝ
2019.01.29