2011-04-14 4 views
1

나는 이것이 매우 어리석은 질문이라는 것을 알고있다. 나는 컴파일러가 실제로 어떻게 작동하는지 거의 아무것도 모른다.컴파일러에서 생성 한 심볼 이름을 어떻게 찾을 수 있습니까?

하지만 최근에 필자는 컴파일러가 내 ivar에 대해 생성하는 기호 이름을 찾고 싶습니다. 어디서 어떻게 대답을 알 수 있습니까? (일부 IDE 만 사용 했으므로 솔루션이 단순하면 좋을 것입니다. 제공하는 지침이 실제로 명시적인 것이라면 큰 도움이됩니다)

(참고로 내가 배울 수있는 참조가 있습니까? 이런 것들에 대해?)

추신 : 저는 IOS 개발자입니다. 그리고 gcc와 LLVM이이 질문에 대해 다른 대답을하면, 둘 다 알고 싶습니다.

+0

:-(어셈블리 코드가 필요하지 않습니다. 이 모든 언어는 다르게 설계되고 작동하며 GCC 나 Llvm이 단 한가지 만하는 것은 아니기 때문에 C와 Objective-c가 어떻게 컴파일되는지 당신이 정말로 알고 싶어하는 것처럼 들립니다 Objective-c가 '위에 있습니다 'C의 첫 번째 공부를 원할 것입니다. – hooleyhoop

답변

4

nm을 사용하면 이진 객체의 내용을 덤프 할 수 있습니다. 그런 다음 각 컴파일러에는 자체적 인 mangling 방법이 있습니다. Name mangling for objective C in wikipedia을 살펴 보시길 권 해드립니다. 그러면 mangling이 어떻게 작동하는지 이해하는 데 도움이됩니다.

0

분명히 GCC와 Clang은 서로의 코드를 사용할 수 있기 때문에 호환 가능한 이름 - 맹 글링 스키마가 있어야합니다.

0

Xcode를 사용하는 경우 3 소스 파일을 선택한 다음 빌드 메뉴에서 "어셈블리 코드 표시"를 선택하십시오.

은 분명히 엑스 코드 4 사용자는 GCC는 C, C++, 자바, 오브젝티브 C, 목표 - C++, 파스칼과 다른 사람을 컴파일 정말 바보 같은 질문. 한 가지 고려해야 할 밤은

관련 문제