컴퓨터 과학 & 영상처리 관련/Assembly (시스템 소프트웨어)
calling convention
꺄뜨르
2011. 5. 21. 22:08
1. call and return
- 서브프로그램은 call 명령어에 의해 불려지고 ret를 통해 복귀한다
2. parameter passing
- 파라메터들은 부르는 쪽에서 push 해놓는다
- 서브프로그램 안에서 파라메터들은 ebp를 이용하여 접근한다
- 파라메터들은 부르는 쪽에서 삭제한다
3. local variables
- 지역 변수들은 스택에 할당
- 지역 변수들도 ebp로 접근한다
4. return value is passed via eax register
- 리턴 값 들은 eax 레지스터를 통해 전달한다
파라메터 입력시
i = func(1, 2); 의 경우
push dword 2 ; 2nd parameter
push dword 1 ; 1st parameter
call func ; call subprogram
add esp, 8 ; remove parameters
뒤에부터 push
지역 변수 입력시
int a, b, c;
sub esp, 12
ebp - 4 = a
ebp - 8 = b
ebp - 12 = c
이런식으로 그냥 순서대로 push
- 파라메터들은 부르는 쪽에서 push 해놓는다
- 서브프로그램 안에서 파라메터들은 ebp를 이용하여 접근한다
- 파라메터들은 부르는 쪽에서 삭제한다
3. local variables
- 지역 변수들은 스택에 할당
- 지역 변수들도 ebp로 접근한다
4. return value is passed via eax register
- 리턴 값 들은 eax 레지스터를 통해 전달한다
파라메터 입력시
i = func(1, 2); 의 경우
push dword 2 ; 2nd parameter
push dword 1 ; 1st parameter
call func ; call subprogram
add esp, 8 ; remove parameters
뒤에부터 push
지역 변수 입력시
int a, b, c;
sub esp, 12
ebp - 4 = a
ebp - 8 = b
ebp - 12 = c
이런식으로 그냥 순서대로 push