Курс Основы построения трансляторов


Связывание. Сравнительная характеристика языков программирования - часть 3


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

6.       Если переменная определяется как автоматическая (локальная внутри тела функции или блока), то она размещается  в стеке программы:

- во время трансляции определяется ее размерность и генерируются команды, которые резервируют под нее память в стеке в момент входа в тело функции (блок). То есть в процессе трансляции переменная связывается только с относительным адресом в стеке программы;

- связывание локальным переменной с ее адресом  в сегменте стека осуществляется при  выполнении в момент входа в тело функции (блок). Благодаря такому способу связывания в рекурсивной функции существует столько “экземпляров” локальных переменных, сколько раз функция вызывает сама себя.

7.       Тип операции “+” в конкретном выражении a+b определяется при трансляции в зависимости от типов операндов. В данном случае генерируется операция целого сложения.

8.       С точки зрения времени связывания понятие ИНИЦИАЛИЗАЦИЯ внешних переменных можно определить как связывание переменных с их значениями в процессе трансляции программы (int a=10;)  С этой точки зрения обычное присваивание можно рассматривать как связывание переменной с ее значением во время выполнения программы.

С понятием связывания тесно переплетаются понятия СТАТИЧЕСКОГО и ДИНАМИЧЕСКОГО определения данных. Статически определенные данные имеют раннее время связывания - обычно во время трансляции программы, динамические данные - позднее, во время выполнения.


Начало  Назад  Вперед



Книжный магазин