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


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


Трансляция и последующие действия по подготовке программы к выполнению представляют собой процесс преобразования программы, записанной  на некотором формальном языке, в другую формальную систему - архитектуру компьютера, в которой она может быть выполнена (интерпретирована).  Для понимания этого процесса, а также отличий, имеющихся в различных языках программирования, в [3] введено понятие СВЯЗЫВАНИЯ, а также ВРЕМЕНИ СВЯЗЫВАНИЯ.

 

СВЯЗЫВАНИЕ -- процесс установления соответствия между объектами и их свойствами программы на формальном языке программирования (операции, операторы, данные) и объектами архитектуры компьютера (команды, адреса.

 

ВРЕМЕНЕМ СВЯЗЫВАНИЯ называется соответственно фаза подготовки программы к выполнению (трансляция, компоновка, загрузка), на которой производится это действие. Заметим, что различные характеристики одного и того же объекта (например, переменной) могут связываться с различными элементами архитектуры в разное время, то есть процесс связывания не является одномоментным. Для начала перечислим возможные времена связывания:

-   при определении  языка;

-   при реализации компилятора;

-   во время трансляции, включающей в себя:

-   препроцессор (макропроцессор)

-   лексический, синтаксический и семантический анализ, генерацию кода и его оптимизацию;

-   компоновку (связывание);

-   во время загрузки программы;

-   во время выполнения программы, в том числе:

-   при входе в модуль (процедуру, функцию);

-   в произвольной точке программы.

В качестве примера рассмотрим простейший фрагмент программы, для которого перечислим более-менее полный перечень времен связывания его различных свойств с элементами архитектуры компьютера:

 

int a,b;  … a+b …

 

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


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