АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ВНУТРЕННИЕ ФОРМЫ ИСХОДНОЙ ПРОГРАММЫ

Читайте также:
  1. B) Количественная определённость относительной формы стоимости
  2. I. Системные программы.
  3. II Организационные формы антиглобалистского движения.
  4. II. Требования к результатам освоения основной образовательной программы начального общего образования
  5. III. Описание основных целей и задач государственной программы. Ключевые принципы и механизмы реализации.
  6. III. Требования к структуре основной образовательной программы начального общего образования
  7. III. Формы борьбы и эффективность действий антиглобалистов.
  8. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  9. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  10. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  11. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  12. IV. Порядок и формы контроля за исполнением государственной функции

 

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

Конечно, следует помнить, что каждое частное внутреннее представление зависит от исходного языка и от назначения транслятора. Например, в языке Паскаль нет необходимости включать во внутреннюю форму исходной программы оператор описания переменных VAR, так как вся информация, содержащаяся в нем, попадает в таблицу идентификаторов и никакие команды генерироваться не будут. Следует также решить насколько подробным должно быть начальное внутреннее представление. Включать ли в него, например, операции преобразования значений из одного типа в другой или это делать позже? Представлять ли цикл эквивалентной группой присваиваний, сравнений, условных и безусловных переходов, или его можно задать с меньшей степенью детализации и транслировать уже на фазе генерации кода? Вообще говоря, первоначальная форма программы лаконичнее и короче, но более полное представление открывает новые возможности для оптимизации и существенно облегчает последующие фазы трансляции.

Все внутренние представления программы обычно содержат элементы двух типов: операторы и операнды. Различия представлений состоят лишь в том, как эти элементы объединяются между собой. В дальнейшем мы будем использовать такие традиционные операторы, как +, -, /, MOD, DIV, *, AND, OR, >, <, = и т. п., а также БП (Безусловный Переход) и УПЛ (Условный Переход по Лжи), точнее условный переход в том случае, когда значение операнда (логического выражения) – ложь (FALSE, 0). Внутри компилятора, конечно же, все они представляются соответствующими лексемами или целочисленными кодами.

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

В поле операнда можно предусмотреть признак косвенной адресации и не заводить для этой цели отдельного оператора. То есть операнд может указывать, что данное значение есть адрес того значения, которое на самом деле требуется. Это значительно упрощает описание индексируемых переменных.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.)