Step 4 (S-6988)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/535/step/4

Step 4 (S-6988) 1.png

[00:00 - 00:14] 3 этап называется линковкой на этом этапе несколько объектных файлов полученных на предыдущем этапе собираются в 1 исполняемый ну или библиотечных правило если мы собираем библиотеку при этом


[00:14 - 00:34] происходит связывание имен функций с их адресами уже скомпилированном коде то есть если у меня в 1 из файлов был вызов некоторые функции которая при этом находился в другом файле то вызов этой функции и ее тела например на разных объектах


[00:34 - 00:51] в результирующем исполняемом файле на месте вызова функции бар должен быть указан адрес и функционал исполняет для этого как раз нужна линковка по каждому


[00:51 - 01:07] объектом follow составляется специальная таблица всех и дальше мы снова проходим по всем объектам файлам и за меня а вызов функции по имени на вызов то есть вот


[01:07 - 01:26] наталья если это будет подставлено какая то инструкция кол с конкретным адресом на этапе установки очень важно чтобы каждой функции имела свои это ограничение


Step 4 (S-6988) 2.png

[01:26 - 01:42] унаследовано и все и объясняется тем что посмотреть на файлов для сети + + он 1 и тот же это позволяет нам использовать в 1 и той же программе часть кода написана она сейчас написано на c + + все решалось просто все не было


[01:42 - 01:57] функций с одинаковыми именами все + + ограничения сняты может быть 2 или несколько функций с 1 и тем же именем но различными для того чтобы в функциями разные имена


[01:57 - 02:15] этим имена функций преобразовывается специальным образом таким образом чтобы именно функции закодировать ее портрет например если мы посмотрим как компилятор 10 обработает функцию


[02:15 - 02:30] фу который принимает целочисленное значение и веществ назначения и ничего не прощает то компилятор преобразует имя все вот так


[02:30 - 02:48] который не достаточно простой если мы посмотрим z 3 это некоторые префикс которые пока ты что то все закодировано а 3 означает длину имени функции то есть состоит из 3 символов и дальше идут


[02:48 - 03:06] закодированы в данном случае и соответствуют into и 9 соответственно аналогичным образом волю ковке нуждаются глобальная переменная там немножко более просто так


[03:06 - 03:22] ладно хрен с 1 и тем же именем быть не может еще 1 важный момент который происходит этапе линковки это выставления точки входа точка входа это функция с которой начинается выполнение


Step 4 (S-6988) 3.png

[03:22 - 03:40] программа молчание это функционален причем это может иметь 1 из 2 сигналов либо функции без параметров о том как использовать эти параметры мы обсудим в 1 следующих лекций поэтому пока будем считать что


[03:40 - 03:55] точка входа выбирает сперва образом то есть эта функциональность надо отметить что функция возвращает некоторые целочисленное значение в случае если ваша программа отработала без ошибок


[03:55 - 04:04] нужно вращать но если вы вернете мне нулевое значение то будет считаться что ваша программа закончила выполнение с ошибкой