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

ГЕНЕРАЦИЯ КОДА И СБОРКА

Читайте также:
  1. Васкуляризация. Иннервация. Возрастные изменения. Регенерация.
  2. Виды хрящевой ткани, возрастные изменения и регенерация хряща
  3. Возрастные изменения и регенерация
  4. Генерация и оптимизация кодов
  5. Задание №8 Сборка и продажа компьютеров
  6. Кожные железы: источники развития, принципы классификации, типы секреции, регенерация.
  7. Нервная ткань. Морфо-функциональная характеристика. Морфо-функциональная характеристика миелиновых и безмиелиновых волокон. Миелинезация и регенерация нервных волокон.
  8. Регенерация
  9. Регенерация желёз
  10. Регенерация костной ткани
  11. РЕГЕНЕРАЦИЯ ОТДЕЛЬНЫХ ОРГАНОВ.

 

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

На рис. 8.1 представлены примеры кодовых продукций в виде ассемблерных фрагментов для ряда операций из матрицы тетрад.

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

В реальных компиляторах формирование кода зачастую также осуществляется с помощью специализированных макропроцессоров. При этом директивы условной трансляции в макроопределениях операций могут обеспечить не только преобразование типов данных, но и машинно-зависимую оптимизацию, связанную с сохранением значений регистров во временной памяти и их загрузку, эффективном использовании всей совокупности регистров процессора и формировании более коротких и быстродействующих регистровых команд [6].

 

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

· разрешить все символьные ссылки;

· вычислить адреса;

· сгенерировать двоичные машинные команды;

· подготовить информацию для загрузчика.


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.003 сек.)