Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 1557
- vue-google-login
- Codeforces Round 831 (Div. 1 + Div. 2)
- 밑바닥부터 시작하는 딥러닝 1
- Round 866
- iupc
- dart
- 리버싱
- django
- 카카오 로그인
- 인하대 프로그래밍 경진대회
- idpiframe_initialization_failed
- list_display
- Flutter
- 알고리즘 대회
- 앳코더
- Graph Cost
- Div. 2
- 2022
- vue3
- E - Hanging Hearts
- 넥토리얼
- 레지스터
- 카카오 API
- expand item
- shake!
- Hello 2023
- 기본키 변경
- Good Bye 2022: 2023 is NEAR
- 코드포스
Archives
- Today
- Total
pseong
함수 호출 규약 본문
- __cdecl : 함수를 호출한 곳에서 스택을 보정한다. (ex: add esp 8, 함수 호출 전에 푸시해줬던 인자들 스택에서 제거)
- __stdcall : 함수 내에서 리턴할 때 스택을 보정한다. (ex: ret 16, 함수 호출 전에 푸시해줬던 인자들 스택에서 제거)
- __fastcall : 인자가 2개 이하일 경우 인자를 푸시하지 않고 edx와 ecx 레지스터를 이용해서 전달한다.
- __thiscall : __stdcall과 동일하지만 ecx레지스터에 현재 객체 포인터를 전달하고 함수를 호출한다. (class내의 함수에서 사용된다.)
TIP) 함수 내의 시작 부분에서 레지스터를 푸시하는 행위는 그 레지스터를 함수 내 연산에 사용하기 위해 이전값을 잠시 저장하는 용도로 자주 해석된다.
TIP) void형이 아닌 함수내의 끝 부분에서는 항상 eax(리턴값) 을 설정해주는 코드가 존재한다.
'리버스' 카테고리의 다른 글
함수 호출 시 ESP, EBP 레지스터와 스택 프레임 (0) | 2021.12.27 |
---|---|
레지스터의 역할 (0) | 2021.12.27 |
Comments