#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 не нужен ассемблерный код 🙁