박오이님
무미건조한 개발자
박오이님
전체 방문자
오늘
어제
  • 뭥미 (101)
    • 프로젝트 (8)
      • 자가 보호 (3)
      • 주식 시장 분석 도구 (5)
    • 보안 (7)
      • 개론 (2)
      • 웹 (2)
      • 시스템 (2)
    • 개발 (69)
      • C++ (12)
      • Win32 (7)
      • MFC (2)
      • 자료구조 (8)
      • 알고리즘 (22)
      • 백준 (9)
      • 프로그래머스 (4)
      • LeetCode (0)
      • 개발자 면접 준비 (4)
      • OpenGL (1)
    • 서적 (13)
      • Effective C++ (9)
      • Effective Modern C++ (4)
    • 관심사 (4)
      • 재테크 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 나동빈 #알고리즘 #동빈나
  • jsoncpp
  • C
  • 에라토스테네스의 체 #C #C++ #개발 #알고리즘 #BFS #DFS #백준 #백준알고리즘
  • 코딩컨벤션
  • 프로세스메모리
  • 나동빈
  • C++
  • EffectiveC++
  • 동빈나
  • 백준 #알고리즘 #플로이드와샬 #DFS #BFS #C #C++
  • 합집합찾기
  • 윈도우시스템프로그래밍
  • 안경잡이개발자
  • 개발
  • 최소간선비용
  • CPP
  • 윈도우
  • 크루스칼알고리즘
  • 에라토스테네스의 체 #알고리즘 #개발 #C #C++ #소수 #소수판별
  • Functional
  • 윈도우프로그래밍
  • vcpkg
  • DFS #BFS #알고리즘 #프로그래밍 #코딩테스트 #코딩 #C++ #C
  • 알고리즘
  • std
  • 시스템프로그래밍
  • 윈도우개발자
  • JSON
  • 플로이드와샬알고리즘 #최단경로 #백준 #알고리즘 #개발 #C #C++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
박오이님

무미건조한 개발자

개발/C++

함수 호출 규약(Calling convention)

2021. 3. 17. 00:14

참고 자료:
아래 블로그를 보는 게 더 배울 게 많다.
굳이 내 자료를 보는 것보다 설명,그림이 잘 되어있어 시간을 아끼도록 하세요!
blog.kimtae.xyz/7

 

함수호출규약

1. 함수 호출 규약 개요 함수 호출 규약(Calling Convention)이란, 함수를 호출하는 방식에 대한 약속이다. 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종

blog.kimtae.xyz

함수 호출 규약이란, 함수를 호출하는 방식에 대한 약속이다.
함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종류를 구분한다.

Stack Frame은 함수의 호출 과정에서 호출되는 함수가 사용하기 위해 할당되는 Stack의 공간을 의미한다.
Stack Frame에는 함수를 호출할 때 입력한 전달 인자, 함수가 종료될 때 복귀할 명령어의 주소, 이전 Stack Frame EBP값을 저장하고, 지역변수를 저장하기 위한 공간을 할당한다.

EBP (Extended Base Pointer) 현재 스택 프레임의 주소를 담는 용도로 사용한다.
ESP (Extended Stack Pointer) 스택의 꼭대기 주소를 담는 용도로 사용한다.

여기서 다룰 건, cdecl과 stdcall을 다룬다.
1. cdecl
인자 전달 순서: 가장 오른쪽 인자부터 전달
인자 전달 매체: Stack을 사용
Stack Frame 정리 방법: 함수를 호출한 Caller가 인자를 정리

특징:
- C,C++에서의 표준 함수 호출 규약
- 가변인자를 사용할 수 있다.

2. stdcall
인자 전달 순서: 가장 오른쪽 인자부터 전달
인자 전달 매체: Stack을 사용
Stack Frame 정리 방법: 호출을 당한 Callee가 함수를 종료하면서 인자를 정리한다.

꼭! 위 참고한 블로그에서 어셈블리코드를 보면 이해가되니까 시간아깝다고 넘기지맙시다.

저작자표시 (새창열림)

'개발 > C++' 카테고리의 다른 글

map ? unorderd_map ?  (0) 2021.08.09
인라인 함수(inline function)  (0) 2021.03.17
코딩 컨벤션 맛보기  (0) 2020.03.29
STL (Standard Template Library)  (0) 2019.10.02
C++과 C의 눈에 보이는 차이점  (0) 2019.03.26
    '개발/C++' 카테고리의 다른 글
    • map ? unorderd_map ?
    • 인라인 함수(inline function)
    • 코딩 컨벤션 맛보기
    • STL (Standard Template Library)
    박오이님
    박오이님
    긍정도 아니고 부정도 아닌 0

    티스토리툴바