티스토리 뷰


참고 : https://msdn.microsoft.com/ko-kr/library/zthk2dkh.aspx



1. 32BIT


EBP를 기준으로 EBP+8h, EBP+Ch, EBP+10h 이렇게 매개 인자가 들어간다.




2. 64BIT


리눅스와 마찬가지로 레지스터를 이용해서 매개 변수를 전달한다.


2-1 매개 인자가 모두 int일 때 

func1(int a, int b, int c, int d, int e);    
// a in RCX, b in RDX, c in R8, d in R9, e pushed on stack  


2-2 매개 인자가 모두 부동소수점 일 때
func2(float a, double b, float c, double d, float e);    
// a in XMM0, b in XMM1, c in XMM2, d in XMM3, e pushed on stack  

2-3 정수 / 부동소수점 혼합
func3(int a, double b, int c, float d);    
// a in RCX, b in XMM1, c in R8, d in XMM3  

2-4 ___m64, __m128 및 집합체 

func4(__m64 a, _m128 b, struct c, float d);  
// a in RCX, ptr to b in RDX, ptr to c in R8, d in XMM3  


Comments