여기서 C 함수가 호출 될 때 어셈블리가 유지해야하는 레지스터에 대한 설명서를 찾을 수 있습니까?C 레지스터 호출 규칙
답변
Dr Agner 안개 최적화 매뉴얼에는 32 비트와 64 비트 모두에 대한 모든 공통 시스템 및 컴파일러 규칙 (ABI)이 나란히 나열되어 있습니다. 그들은 또한 다른 많은 유용한 정보를 담고 있습니다 : 여기에서 얻을 수 있습니다 : http://www.agner.org/optimize/
고마워요, 제가 정확히 무엇을 찾고 있었습니까. – misianne
두 가지 사용 규칙이 있지만 가장 일반적인 것은 CDECL입니다. 인수는 해당 링크에서 설명하는 순서대로 스택에 푸시되며 호출 수신자가 사용할 수있는 "스크래치"레지스터는 및 %edx
입니다. 나머지는 스택에 보존해야합니다.
그러나 다른 사람들이 지적했듯이, 이것은 많은 규칙 중 하나 일뿐입니다. 프로그래밍중인 시스템의 설명서를 확인하십시오.
이 답변은 인텔 플랫폼에서만 의미가 있습니다. 틀림없이 OQ가 사용하고있는 것일 수도 있지만 말하지는 않았습니다. –
오른쪽; OP가 하드웨어를 진술하는 것이 중요하다고 생각하지 않는다면 아마 그는 자기 컴퓨터에서 놀고있을 것이라는 가정하에 놀고 있습니다. –
이것은 ABI (응용 프로그램 바이너리 인터페이스)라고합니다. 어디서 찾았 니? 아키텍처 및 운영 체제에 따라 다릅니다.
예 : Google for ABI x86_64 linux
64 비트 Linux 시스템에 대한 호출 규칙을 찾으려면.
이 링크에서보세요 :이 도움이
Using Win32 calling conventions
Intel x86 Function-call Conventions - Assembly View
희망을.
꽤 많은 아키텍처에만 해당됩니다. 우선 wikipedia의 설명을 살펴보십시오.
- 1. C++ 사용자 지정 호출 규칙
- 2. Sparc 프로 시저 호출 규칙
- 3. GCC cdecl을 호출 규칙
- 4. C 호출 규칙 및 인수 전달
- 5. x64의 COM 호출 규칙
- 6. iPhone/ARM 호출 규칙
- 7. C의 호출 규칙
- 8. boost :: function_types 함수 호출 규칙
- 9. GCC MIPS-32 호출 규칙/스택 프레임 정의
- 10. 관리되지 않는 함수 후킹, 호출 규칙에 스택/레지스터 문제가 있습니까?
- 11. Win VS2008 호출 규칙 : Delphi dll from C
- 12. 레지스터 단축키
- 13. 명령어로드 레지스터
- 14. WinCE 및 Linux에서 ARM 호출 규칙?
- 15. C++ 기반 규칙 엔진
- 16. C++ 헤더 파일 규칙
- 17. C++ 명명 규칙
- 18. C++ const 규칙?
- 19. C# 규칙/모범 사례
- 20. vim에서 레지스터 결합하기
- 21. 레지스터 할당 알고리즘의 효율성
- 22. 레지스터 관리 팁
- 23. ABI 호출 규칙 및 아치와 혼동 받기
- 24. 함수형 포인터 타입의 호출 규칙 확인
- 25. OpenSolaris syscall 호출 규칙 (x86)이란 무엇입니까?
- 26. C90 - C99 : 레지스터 구조체
- 27. 팩토리 대리자가있는 레지스터 유형
- 28. PHP 레지스터 시스템
- 29. GCC의 레지스터 값 덤프
- 30. MXCSR 제어 레지스터 범위?
프로세서/컴파일러 설명서에 있습니다. –
컴파일러 도움말 또는 컴파일러 공급 업체 웹 사이트를 방문하십시오. – Erik
컴파일러에서 이식 가능한 코드를 동일한 시스템 아래에있는 다른 코드로 옮길 수 없습니까? – misianne