ВУЗ:
Составители:
- 34 -
элемента, общая длина, адрес начала массива.
Не существует стандарт на информационные поля, следователь-
но, разные трансляторы моделируют одну и ту же структуру данных
по-разному. Разные форматы информационных векторов затрудняют
объединение модулей, написанных на разных языках.
4. Генерация программного сегмента.
Программа на языке высокого уровня после синтаксического
анализа содержит выражения, преобразованные в постфиксную форму,
и преобразованную или не преобразованную управляющую структуру.
Если компилятор осуществляет преобразование управляющих
структур, то он представляет оператор в постфиксной форме, т.е. в
виде операций: if, while,else, аргументами которых являются зна-
чения логических выражений и адреса операторов.
Такое представление операторов управления позволяет обраба-
тывать их как обычные арифметические операции в общем операторе
case генератора кода.
Для управляющих структур строится заготовка из команд
вычисления логического выражения условного перехода по флагам и
безусловного перехода. Усложняет процесс означивания заготовки
генерация меток для тех операторов, которые еще не оттранслирова-
ны. В результате, символическое имя метки сгенерировать можно, но
определить адрес метки в кодовом сегменте заранее нельзя. Поэтому
генерация кодов управляемых структур бывает обычно двухпроходо-
вой. На первом проходе: используются все заготовки, но метки в
заготовках не означиваются. На втором: ведется переменный счетчик
команд, вычисляющий адрес каждой команд, вычисляющий адрес каждой
команды и следовательно, способный означить любую метку.
5. Обработка локальных и глобальных переменных.
Основная проблема обработки локальных и глобальных имен сво-
дится к необходимости различить употребление одноименных перемен-
ных в разных программах или блоках. Для этого в структуре таблицы
для каждой переменной указывают: в какой процедуре или блоке она
объявлена и какой уровень вложенности этой процедуры. Генератор
кода в любое время следит, какой код процедуры генерируется, и в
соответствии с этим используются адреса элементов.