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
'컴퓨터 과학 & 영상처리 관련 > Assembly (시스템 소프트웨어)' 카테고리의 다른 글
visual studio 2008 에서 디스어셈블 하면 나오는 레지스터들 (0) | 2012.09.17 |
---|---|
편리돋는 매크로 %define (0) | 2011.06.03 |
lea eax, [ebp-8] 해서 값이나 주소를 확인해보자 (0) | 2011.06.03 |
Implementation of atoi in assembly (0) | 2011.05.22 |
dump 시리즈 사용법 (0) | 2011.05.20 |