2010-05-08 2 views

답변

1

위키 백과의 기사에 Calling Convention은 ARM 규칙을 잘 요약하고 있습니다.

+0

모든 OS에서 - 동일한 규칙이 적용됩니까? 나는 믿기가 어렵다는 것을 알게된다. x86에는 수십 가지 규칙이 있습니다. –

+0

기사 작성자는 x86 섹션에서이 기사에 대한 훌륭한 참고 자료를 작성했으며, 그 중 많은 수가 (주로 레지스터 부족으로 인해) 주목할만한 내용을 설명하고 기사를 설명하는 별도의 기사를 제공했습니다. Wikipedia의 주제에 대한 논의는 필자가 보아 왔던 것 중 가장 완벽하고 x86이 다른 칩에 비해 왜곡 된 해결책이 있는지에 대한 더 많은 논의를 제공합니다. 간단히 말해서, x86 초기 (다른 칩과는 달리)에는 여러 가지 컴파일러 벤더가 있었고 다른 방법을 사용했습니다. 그러나 오늘날 x86에서도 ABI를 표준화하려는 강력한 움직임이 있습니다. –

3

오래되었지만 틀린 대답입니다. 위키 백과는 종종 부정확하며 (때로는 틀린 경우도 있음), 이는 이전의 사례의 예입니다. 이 (어떤 위키 백과 문서입니다) 일반적인 호출 규칙이 있지만, 운영체제는 벗어날 수 - 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 ..)

+0

R7을 다르게 사용하더라도 ABI가 중단되지는 않지만 디버깅 도구 만 손상됩니다. iOS ABI와 EABI의 중요한 차이점은 64 비트 인수 정렬입니다. iOS는 4 바이트 정렬을 사용하고 EABI는 8을 사용합니다. –