iPhone/ARM에서 CPU 레지스터는 보존해야하는 함수입니까?iPhone/ARM 호출 규칙
답변
위키 백과의 기사에 Calling Convention은 ARM 규칙을 잘 요약하고 있습니다.
오래되었지만 틀린 대답입니다. 위키 백과는 종종 부정확하며 (때로는 틀린 경우도 있음), 이는 이전의 사례의 예입니다. 이 (어떤 위키 백과 문서입니다) 일반적인 호출 규칙이 있지만, 운영체제는 벗어날 수 - Android 및 iOS 모두 할 (가능성 승 8 의지, 그러나 우리는 바이너리 곡면을 시작할 때 알고 있습니다)
http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html 제공 iOS의 올바른 사양이므로 여기서 반복 할 필요가 없습니다. 가장 주목할만한 것은 r7과 r12의 사용에주의하십시오. 또한 ARMv6과 ARMv7이 다릅니다. 지금까지 ARMv7 아키텍처가 필요합니다. (A4,5,6 ..)
R7을 다르게 사용하더라도 ABI가 중단되지는 않지만 디버깅 도구 만 손상됩니다. iOS ABI와 EABI의 중요한 차이점은 64 비트 인수 정렬입니다. iOS는 4 바이트 정렬을 사용하고 EABI는 8을 사용합니다. –
- 1. x64의 COM 호출 규칙
- 2. C 레지스터 호출 규칙
- 3. GCC cdecl을 호출 규칙
- 4. C의 호출 규칙
- 5. boost :: function_types 함수 호출 규칙
- 6. C++ 사용자 지정 호출 규칙
- 7. Sparc 프로 시저 호출 규칙
- 8. C 호출 규칙 및 인수 전달
- 9. ABI 호출 규칙 및 아치와 혼동 받기
- 10. 함수형 포인터 타입의 호출 규칙 확인
- 11. OpenSolaris syscall 호출 규칙 (x86)이란 무엇입니까?
- 12. WinCE 및 Linux에서 ARM 호출 규칙?
- 13. Zend_ACL의 규칙 규칙
- 14. 표준 규칙
- 15. 직접 규칙 실행 (규칙 + 워크 플로 관련)
- 16. .NET 3.5에서 호출 규칙 위반시 PInvoke가 충돌하지 않는 이유는 무엇입니까?
- 17. cedecl 호출 규칙 - 컴파일 된 asm 명령어로 인해 충돌이 발생합니다.
- 18. FXCop 규칙 자식 메서드로 인터페이스 메서드를 호출 할 수 있어야합니다.
- 19. GCC MIPS-32 호출 규칙/스택 프레임 정의
- 20. Win VS2008 호출 규칙 : Delphi dll from C
- 21. JSF 탐색 규칙
- 22. Java MVC 패턴의 변수 선언 규칙/규칙?
- 23. 글로벌 포털 웹 규칙 및 접근성 규칙?
- 24. 드루팔 6 규칙 및 규칙 집합을 트리거
- 25. 테이블 명명 규칙?
- 26. 로깅 규칙
- 27. 업데이트 규칙
- 28. 메이크 규칙
- 29. 메이크 규칙
- 30. 번역 규칙
모든 OS에서 - 동일한 규칙이 적용됩니까? 나는 믿기가 어렵다는 것을 알게된다. x86에는 수십 가지 규칙이 있습니다. –
기사 작성자는 x86 섹션에서이 기사에 대한 훌륭한 참고 자료를 작성했으며, 그 중 많은 수가 (주로 레지스터 부족으로 인해) 주목할만한 내용을 설명하고 기사를 설명하는 별도의 기사를 제공했습니다. Wikipedia의 주제에 대한 논의는 필자가 보아 왔던 것 중 가장 완벽하고 x86이 다른 칩에 비해 왜곡 된 해결책이 있는지에 대한 더 많은 논의를 제공합니다. 간단히 말해서, x86 초기 (다른 칩과는 달리)에는 여러 가지 컴파일러 벤더가 있었고 다른 방법을 사용했습니다. 그러나 오늘날 x86에서도 ABI를 표준화하려는 강력한 움직임이 있습니다. –