Как я могу узнать имя символа, сгенерированное компилятором для моего кода?

#objective-c #gcc #compiler-construction #symbols #llvm

#objective-c #gcc #компилятор-построение #символы #llvm

Вопрос:

Я знаю, что это в значительной степени глупый вопрос. Я почти ничего не знаю о том, как на самом деле работает компилятор.

Но недавно я хочу узнать, какое имя символа генерирует компилятор для моего ivar, моих методов. Где и как я могу узнать ответ? (Я использовал только некоторые IDE. Итак, если решение лучше быть простым. И было бы здорово, если бы предоставленные вами инструкции были действительно явными)

(Кстати, есть ли какая-нибудь ссылка, по которой я могу узнать о подобных вещах?)

PS.Я разработчик IOS.И если gcc и LLVM дают разные ответы на этот вопрос, я хотел бы знать оба.

Комментарии:

1. на самом деле это не глупый вопрос. Следует учитывать одну вещь: GCC компилирует C, C , Java, Objective-C, Objective-C , Pascal и другие. Все эти языки разработаны и работают по-разному и имеют разные возможности, поэтому GCC или Llvm не выполняют только одну вещь. Похоже, что вы действительно хотите знать, как компилируются C и Objective-c. Поскольку Objective-c находится «сверху» C, вы, вероятно, захотите сначала изучить C.

Ответ №1:

Вы можете использовать nm для вывода содержимого двоичного объекта. Затем у каждого компилятора есть свой собственный способ искажения. Я предлагаю вам взглянуть на Изменение имен для objective C в википедии, это поможет вам понять, как работает изменение.

Ответ №2:

Конечно, GCC и Clang должны иметь совместимые схемы искажения имен, поскольку они могут использовать код друг друга.

Ответ №3:

Если вы используете XCode 3, выберите исходный файл, а затем выберите «Показать ассемблерный код» в меню сборки.

Очевидно, пользователям XCode 4 не нужен ассемблерный код 🙁