C 프로그램의 두 정수 또는 포인터 매개 변수가있는 inline
함수를 호출 할 때 이들은 rdi
및 rsi
레지스터에 전달됩니다. inline
함수에 대한 정수/포인터 매개 변수가 레지스터에 전달되는 방식으로 컴파일을 수행 할 수 있습니까 (아니요 스택에)?Linux로 전달되는 매개 변수 C 인라인 함수
2
A
답변
3
Counter 질문 : 왜 신경 쓰시겠습니까? 나는 당신이하지 말아야한다고 생각합니다. 그것이 당신의 컴파일러 작업입니다. 컴파일러가 올바른 일을 할 수 있다고 믿지 않는다면, 컴파일러를 전혀 사용하지 않아야합니다.
그리고 저는 매개 변수가 레지스터에 상륙한다는 보장이 틀렸다고 확신합니다.
6
함수가 인라인되면 함수를 호출 한 함수에 해당 코드가 작성된 것처럼 처리됩니다. 이 경우 매개 변수가 전혀 전달되지 않습니다.
함수가 인라인되지 않으면 함수와 전혀 다릅니다. inline
은 컴파일러에서 함수를 인라인하려고하는 힌트 일뿐입니다. 그것은 연결에 전혀 영향을 미치지 않습니다.
0
C에서 첫 번째 두 정수는 % rdi 및 % rsi ...로 전달되지 않습니다. 이는 ABI/통화 규칙 문제입니다. 언어 문제가 아닙니다. 함수가 인라인과 주변 코드의 나머지 부분은 그것을 허용됩니까 경우
의 INT의의 가능성이 범용 레지스터에있을 것입니다 ...
그러나 이것은 절대적 문제가되지 않습니다 ... 그리고 당신이 경우 당신은 단지 컴파일러가 읽을 수있는 asm을 생성 할 수 있습니다 ...
관련 문제
- 1. C++에서 텍스트로 전달되는 매개 변수
- 2. 참조로 전달되는 ANT 매개 변수
- 3. 인라인 파이썬 코드에서 "gets"C 언어 함수 입력 매개 변수
- 4. C++ 인라인 함수, 값으로 전달 된 매개 변수
- 5. C 정적 인라인 매개 변수 평가 최적화
- 6. 자바 문제로 전달되는 매개 변수
- 7. ASP.Net MVC에서 전달되는 매개 변수
- 8. clojure에 bash로 전달되는 매개 변수
- 9. JSF 2.0에 전달되는 매개 변수
- 10. module.exports 인라인 함수 변수
- 11. C# 인라인 함수 인수 및 임시 변수
- 12. C++ 참조 매개 변수 함수
- 13. 매개 변수 동작이없는 C 함수
- 14. C++ 함수 포인터 인라인
- 15. Sqlmap 인라인 매개 변수
- 16. 값이 전달되는 함수 매개 변수의 기본값은 028입니다.
- 17. SQL의 저장 프로 시저에 전달되는 매개 변수
- 18. 재정의 함수 매개 변수/
- 19. C++의 인라인 함수
- 20. C++ implicity 인라인 함수
- 21. Spring MVC : SimpleMappingExceptionResolver에서 뷰에 전달되는 매개 변수
- 22. null을 통해 전달되는 경로 매개 변수
- 23. 보고서 루프에서 전달되는 Salesforce/Apex 매개 변수
- 24. 생성자에 대해 전달되는 기본 매개 변수
- 25. 스크립트 실행시 전달되는 매개 변수 확인
- 26. .NET과 PLSQL 사이에서 전달되는 매개 변수
- 27. C# 변수 설명 함수
- 28. 변수 매개 변수가있는 C++ 호출 루아 함수
- 29. C++ 함수 매개 변수 및 클래스
- 30. C 함수 포인터를 매개 변수 인쇄 문제
수정, 인라인 함수는 컴파일러의 재량에 따라 인라인 될 수 있습니다. –
해답이 명확 해졌습니다. – duskwuff