Что происходит с идентификаторами в программе?
Я начинающий программист. Я просто хотел увидеть результат на разных этапах компиляции, сборки и сшивание. Я неТакже не знаю ассемблера.
Я написал простую программу
#include
int humans = 9;
int main()
{
int lions = 2;
int cubs = populate(lions);
return 0;
}
int populate(int crappyVariable)
{
return ++crappyVariable;
}
Я использовал яgcc - S sample.c
Я удивлен выводом на ассемблере. Я потерял все имена переменных & имена функций.
он сохранил глобальные идентификаторы, такие как люди, население, главное, но он префикс их подчеркивания _. Итак, я не буду рассматривать это как использование идентификаторов. Во всяком случае, дело в том, что он потерял все идентификаторы.
У меня вопрос, как он будет вызывать функции или ссылаться на переменные?
Мне действительно интересно узнать о дальнейших этапах вывода, которые были бы в двоичном формате (который не отображается).
Как будет выход сразу после сборки и перед установкой ссылки? Я думаю, он потеряет даже глобальные идентификаторы с префиксом подчеркивания? Тогда опять вопрос: как бы он вызывал функции или ссылался на переменные для операций?
Я искал информацию в интернете, но не смогне могу найти ничего полезного. Может я'Я не уверен, что искать. Я неЯ не хочу читать большие книги по этому вопросу. Но если есть какие-то статьи, учебники, в которых понятны концепции. Это также было бы полезно.
Я начинающий программист. Так что было бы здорово, если бы вы объяснили это простым, но техническим термином.
РЕДАКТИРОВАТЬ: В ответ на комментарий. Я разбил свой вопрос на несколько вопросов. Вот вторая часть этого вопроса:не понятно с работой компоновщика