Хелпикс

Главная

Контакты

Случайная статья





Связывание.. Раннее связывание.



Связывание.

Выполнение программы в C++ происходит последовательно, строка за строкой, начиная с функции main(). Когда компилятор встречает вызов функции, то точка выполнения переходит к началу кода вызываемой функции. Как компилятор знает, что это нужно сделать?

При компиляции программы, компилятор конвертирует каждый(ую) оператор/инструкцию программы в одну или несколько строк машинного кода. Каждой строке машинного кода присваивается собственный уникальный адрес. Так же и с функциями: когда компилятор встречает функцию, она конвертируется в машинный код и получает свой адрес.

Связывание — это процесс, который используется для конвертации идентификаторов (таких как имена переменных или функций) в адреса.

Раннее связывание.

Большинство вызовов функций, которые встречает компилятор, являются прямыми вызовами функций. Прямой вызов функции — это оператор/инструкция, который(ая)  напрямую вызывает функцию. Например:

 

#include <iostream>

void printValue(int value)

{

std::cout << value;

}

int main()

{

printValue(7); // это прямой вызов функции

return 0;

}

#include <iostream>

 

void printValue(int value)

{

std::cout << value;

}

int main()

{

printValue(7); // это прямой вызов функции

return 0;

}

Поскольку printValue(7), является прямым вызовом функций, то компилятор будет использовать раннее связывание. Он заменит вызов printValue(7) инструкцией, которая сообщит процессору перейти к адресу void printValue(int value).

 

Прямые вызовы функций выполняются с помощью раннего связывания. Раннее связывание (или ещё «статическая привязка») означает, что компилятор может напрямую связать имя идентификатора (например, имя функции или переменной) с машинным адресом. Помните, что все функции имеют свой уникальный адрес. Поэтому, когда встречает вызов функции, он заменяет его инструкцией машинного кода, которая сообщает процессору перейти к адресу функции.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.