C/C의 호출 규칙
C/C에서는 인수가 함수에 전달되는 방법과 방법을 결정하기 위해 다양한 호출 규칙이 사용됩니다. 결과가 반환됩니다. 이러한 규칙은 스택이나 레지스터의 인수 배치 순서와 방법뿐만 아니라 스택 정리에 대한 책임도 규정합니다.
사용 가능한 호출 규칙
C/C 다양한 호출 규칙을 제공합니다. 포함:
-
cdecl: 인수는 호출자 저장 및 호출 수신자 저장 데이터용으로 지정된 특정 레지스터를 사용하여 스택에서 오른쪽에서 왼쪽으로 푸시됩니다.
-
syscall: cdecl과 유사하지만 특정 레지스터를 보존하지 않으며 매개변수 목록의 크기를 전달해야 합니다.
-
pascal: 매개변수는 스택에서 왼쪽에서 오른쪽으로 푸시되며 호출 수신자는 스택 균형을 담당합니다.
-
stdcall: 호출 수신자가 스택 정리를 처리하는 파스칼의 변형으로, 인수는 다음과 같이 오른쪽에서 왼쪽으로 푸시됩니다. cdecl.
-
fastcall: 처음 두 인수는 특정 레지스터에 전달되고 나머지 인수는 스택에 푸시됩니다.
-
벡터콜: 설계됨 SIMD 레지스터를 사용하여 벡터 인수를 효율적으로 전달합니다.
-
safecall: 예외를 투명하게 처리하기 위해 COM(구성 요소 개체 모델) 컨텍스트에서 사용됩니다.
-
Microsoft X64 호출 규칙: Windows 및 x86-64 아키텍처용 사전 부팅 UEFI에서 사용되는 표준화된 규칙으로, 특정 기술을 활용합니다. 인수 및 부동 소수점 값을 레지스터하고 스택에 "그림자 공간"을 사용합니다.
자세한 설명
이러한 호출 규칙에 대한 포괄적인 개요는 다음 리소스를 참조하세요.
- Wikipedia : [C 전화 규칙](https://en.wikipedia.org/wiki/X86_calling_conventions)
- MSDN: [C 컴파일러에 대한 호출 규칙](https://docs.microsoft.com/en-us/cpp/build /x64-calling-convention)
- Intel: [Intel® 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼 1권: 기본 아키텍처](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325383.pdf )
위 내용은 다양한 호출 규칙이 C/C의 함수 인수 전달 및 스택 정리에 어떤 영향을 미치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!