24438

Основные функции компиляторов

Контрольная

Информатика, кибернетика и программирование

Система прерывания ОМЭВМ. Непосредственной причиной такого переключения процессора с одной программы на другую является сигнал прерывания причем характер новой программы которую процессор начинает выполнять в результате воздействия сигнала прерывания и которая называется программой обработки прерывания зависит от источника возникновения этого сигнала. В большинстве случаев возникновение сигналов прерывания не планируется в выполняемой текущей программе а является по отношению к ней независимым или внешним событием. В зависимости от...

Русский

2013-08-09

209 KB

9 чел.

1. Основные функции компиляторов.

Принцип действия компиляторов заключается в том, чтобы перевести текст исходной программы на машинный код, непосредственно воспринимаемый. Компилятор осуществляет перевод сразу, и только после этого становится возможным выполнение программы. Иначе говоря, в компиляторе стадия трансляции предшествует стадии выполнения. Работу компилятора можно упрощённо описать следующей схемой: исходный код программы → компилятор → объектный код.

Компилятор должен решать 3 основных задачи:

1.Лексический анализ 

2.Синтаксический анализ 

3.Генерация объектного кода

Лексический анализ.

    Программа на любом языке высокого уровня состоит из последовательности лексем, или терминальных символов, расположенных в определённом порядке. Лексема - это неделимая минимальная единица языка. Лексемами являются, например, служебные слова, символы операций и т. д. Из лексем составляются более сложные элементы языка - предложения.


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

Метод табличного распознавания

    Наиболее простой и широко применяемый метод построения лексического анализатора опирается на таблицу лексем. Список строится посредством сравнения частей текста с элементами таблицы.

Синтаксический анализ 

Следующий этап работы компилятора заключается в синтаксическом анализе - проверке предложений на предмет их соответствия правилам данного языка.

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

 Задачей синтаксического анализатора является проверка, соответствуют ли предложения программы заданным правилам. Результатом работы является дерево синтаксического разбора


2.Система прерывания ОМЭВМ.

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

В зависимости от источника все прерывания, возникающие в микроЭВМ, принято делить на классы (типы), число и характер которых определяются конкретной ЭВМ. Можно различать, например, следующие классы прерываний:

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

II. Внутрисистемные прерывания, определяемые событиями во внешних устройствах микроЭВМ (например, прерывание от устройства ввода-вывода в моменты готовности к .   передаче этим устройством очередного байта данных или прерывание от таймера). По-другому их называют аппаратными прерываниями.

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

IV. Межпроцессорные прерывания, возникающие, например, при посылке сигналов прерывания от одного процессора к другому.

Важная особенность каждой системы прерывания - возможность автоматически или по желанию программиста запретить или, как говорят, «замаскировать» прерывания процессора. Маскирование прерываний осуществляется по-разному в разных ЭВМ. Например, в микроЭВМ «Электроника-60» для маскирования прерывания процессора от внешнего устройства достаточно установить единичное значение признака Р в регистре состояния процессора. В других ЭВМ для маскирования прерываний нередко используются маски (битовые комбинации), которые могут храниться в особых программно-доступных регистрах (например, в регистре разрешения прерываний IE однокристальной микроЭВМ семейства MCS-51).

Характер и последовательность действий, выполняемых с момента возникновения прерывания, зависят от типа ЭВМ, однако почти всегда можно выделить следующие не равные по длительности этапы:

  1.  идентификация источника сигнала прерывания;
  2.  сохранение текущего состояния прерванного процесса;
  3.  маскирование повторных прерываний от идентифицированного источника сигнала прерывания;
  4.  выполнение программы обработки прерывания;
  5.  восстановление состояния и продолжение прерванногопроцесса.

Первые три этапа реализуются, как правило, аппаратурными (или микропрограммными) средствами и завершаются за относительно короткий промежуток времени. Четвертый этап является наиболее длительным по сравнению с остальными этапами и реализуется с помощью специальной программы обработки прерывания. Выполняемые этой программой действия зависят от источника сигнала прерывания. Например, если сигнал прерывания возник из-за нажатия оператором ЭВМ особой клавиши «Внимание» на консоли, то программа обработки этого типа прерывания может напечатать на консоли некоторое сообщение, подтверждающее факт вмешательства оператора в работу ЭВМ и запрашивающее выполнение оператором какого-нибудь другого действия. Начальный адрес программы обработки прерывания зависит от источника сигнала прерывания и может определяться по результату выполнения первого из перечисленных этапов. Пятый этап реализуется обычно в виде одной или нескольких заключительных машинных команд в программе обработки прерывания.

Приведем характеристику системы прерываний, реализованной в однокристальной микроЭВМ семейства MCS-51 на примере микросхемы Intel 8051. ОМЭВМ 8051 поддерживает пять источников прерываний: два прерывания от внешних источников, два прерывания от таймеров/счетчиков и прерывание последовательного порта. Другие устройства семейства MCS-51 могут поддерживать дополнительные источники прерываний.

Алгоритм обработки прерываний

Блок-схема алгоритма обработки прерываний в ОМЭВМ семейства MCS-51 представлена на рис. 30.

Считывание IE восстанавливает первоначальную маску прерываний. Затем используется обычная команда RET (а не RETI) для завершения подпрограммы обслуживания. Дополнительное программное обеспечение прибавляет 10 мкс (при частоте 12 МГц) ко времени обработки прерываний первого приоритета.

Архитектура системы управления прерываниями для базовой модели (I-8051) показана на рис.9.

Рис.9. Система управления прерываниями

Каждый вид прерывания индивидуально разрешается или запрещается установкой или очисткой соответствующих бит SFR-регистра IE (Interrupt Enable). Регистр содержит также бит общего запрещения, при котором блокируются все прерывания. Назначение битов регистра IE следующее:

IE.7

-

Enable All Interrupts (EA), разрешение прерываний от всех источников;

IE.6, IE.5

-

reserved, зарезервированы для дальнейшего использования;

IE.4

-

Enable Serial Port Interrupt (ES), разрешение прерывания от последовательного порта;

IE.3

-

Enable Timer 1 Interrupt (ET1), разрешение прерывания по переполнению Т/С1;

IE.2

-

Enable External Interrupt 1 (EX1), разрешение прерывания по внешнему сигналу на входе ;

IE.1

-

Enable Timer 0 Interrupt (ET0), разрешение прерывания по переполнению Т/С0;

IE.0

-

Enable External Interrupt 1 (EX1), разрешение прерывания по внешнему сигналу на входе .

Вид воспринимаемого внешнего сигнала (Interrupt Type) по входам, задается программированием соответствующих бит в регистре TCON (TCON.0, TCON.2), а разряды TCON.1, TCON.3 (Interrupt Edge) выполняют роль флагов, фиксирующих поступившие запросы.

Прерывание по последовательному порту вырабатывается функцией логического "ИЛИ" битов RI и TI в регистре SCON.

Каждому типу прерывания может быть программно присвоен высокий или низкий приоритетный уровень путем установки или очистки соответствующего бита в SFR-регистре IP (Interrupt Priority), который имеет (для кристалла I-8051) следующее назначение битов:

IP.7, IP.6, IP.5 - reserved, зарезервированы для дальнейшего использования;

IP.4 - Priority of Serial Port Interrupt (PS), приоритет последовательного порта;

IP.3 - Priority of Timer 1 Interrupt (PT1), приоритет Т/С1;

IP.2 - Priority of External Interrupt 1 (PX1), приоритет внешнего прерывания;

IP.1 - Priority of Timer 0  Interrupt (PT0), приоритет Т/С0;

IP.0 - Priority of External Interrupt 0 (PX0), приоритет внешнего прерывания.

Низкоприоритетное прерывание может прерываться высокоприоритетным, но никогда не прерывается запросом того же уровня приоритета. Поэтому, если одновременно возникают два прерывания с различным уровнем приоритета, то сначала выполняется высокоприоритетное. Если же подобная ситуация складывается для прерываний с одинаковым уровнем приоритета, то последовательность их обработки определяется специальной последовательностью опроса флагов прерываний (Interrupt Polling Sequence). В процессе работы "фиксация" всех флагов прерываний происходит в состоянии S5 каждого машинного цикла, а опрос - во время следующего машинного цикла.

Обработка прерываний и время отклика

Уровни на выводах INT0 и INT1 инвертируются и защёлкиваются во флаги прерывания IE0 и IE1 в фазе S5P2 каждого машинного цикла. В фазе S5P2 устанавливаются флаги прерываний последовательного порта RI и TI. Флаги TF0 и TF1 таймеров/счётчиков устанавливаются в фазе S5P2 машинного цикла, в котором происходит переполнение Т/С. Анализ (опрос) флагов выполняется внутренними средствами ОМЭВМ в следующем после установки (защёлкивания) флагов машинном цикле (цикл опроса флага). И только после выполнения последнего цикла текущей команды производится аппаратный вызов соответствующей подпрограммы обслуживания, эквивалентный команде LCALL.

Обращение к подпрограмме обслуживания задерживается (блокируется аппаратный LCALL) при выполнении хотя бы одного из следующих условий:

уже производится обработка прерывания с таким же или высшим уровнем приоритета;

текущий машинный цикл (цикл опроса флага) не является последним циклом выполняемой команды;

выполняемая команда текущей программы является командой RETI или любой командой обращения к регистрам IE, IP.

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

Флаг прерывания, установленный во время действия блокировки прерывания по одному из указанных выше условий и сброшенный до их снятия, не вызовет обслуживания соответствующего запроса прерывания.

На рис. 33 изображены случаи наиболее быстрой и медленной реакции на прерывание (на примере внешнего прерывания). От момента фиксации запроса внешнего прерывания до начала выполнения первой команды подпрограммы обслуживания требуется от 38 до 86 периодов сигнала тактовой частоты ОМЭВМ TBQ.

Если запрос прерывания с более высоким уровнем приоритета зафиксируется во время аппаратного вызова подпрограммы обслуживания, а именно в фазе S5P2 1-го цикла аппаратной команды LCALL, то по окончании процедуры текущего вызова сразу же начнёт выполняться процедура аппаратного вызова по поступившему запросу.

Аппаратно реализуемая команда LCALL загружает содержимое счётчика команд PC в стек (при этом PSW в стек не записывается), после чего в PC записывается адрес соответствующей подпрограммы обработки прерывания.

При выполнении аппаратно реализуемой команды LCALL в ячейку стека с младшим адресом загружаются разряды 0—7 счётчика команд, а в следующую ячейку стека - разряды 8-15 счётчика команд.

Подпрограмма обслуживания прерывания продолжается до выполнения команды RETI. Команда RETI восстанавливает состояние логики прерывания и загружает в счётчик команд PC 2 байта адреса возврата из двух верхних ячеек стека. Восстановление состояния логики прерывания заключается в следующем: при переходе по вектору на подпрограмму обработки прерывания автоматически до выполнения команды RETI независимо от состояния битов регистра IE запрещаются все прерывания с уровнем приоритета, равным уровню обслуживаемого прерывания, т.е. вложенные прерывания с равными уровнями приоритета невозможны. Команда RETI снимает этот запрет. При использовании команды RET восстанавливается только состояние счётчика команд, т.е. происходит возврат в прерванную программу. Состояние логики прерывания команда RET не меняет, т.е. логика управления обслуживанием прерываний по-прежнему считает, что продолжает обслуживаться прерывание, подпрограмма обработки которого была закончена командой RET.


 

А также другие работы, которые могут Вас заинтересовать

16644. Прекращение обязательств зачетом встречных требований по векселям (на примере обязательств из кредитных договоров) 84 KB
  Прекращение обязательств зачетом встречных требований по векселям на примере обязательств из кредитных договоров Зачет является одним из способов прекращения обязательств что прямо признается действующим Гражданским кодексом РФ ст. 410. Сущность зачета состоит в ...
16645. Копирование векселя 32.5 KB
  Копирование векселя Положение о переводном и простом векселе утвержденное постановлением ЦИК и СНК СССР от 7 августа 1937 г. N 104/1341 является основой вексельного права. Однако оно не всегда отвечает на ряд возникающих в практике вопросов. Мы продолжаем публикацию статей ...
16646. Изменения вексельного текста 31 KB
  Изменения вексельного текста Изучение вексельного права трудно назвать всесторонним. При большом количестве публикаций на эту тему ряд его институтов и конструкций до сих пор остается неисследованным. Рассмотрению этих пресловутых оригинальных особенностей Полож...
16647. Вексельное посредничество 78 KB
  Вексельное посредничество Начатая в N 36 эжЮРИСТ за 2003 г. публикация серии статей посвященных проблемам применения отдельных институтов вексельного права вызвала многочисленные положительные отклики читателей. Теоретическая неразработанность и достаточная сложн...
16648. Три круга суда, или дело о как бы векселях 85.5 KB
  Три круга суда или дело о как бы векселях Использование векселей в хозяйственном обороте осложняется тем что в случае судебного спора по обязательственным отношениям сторонам приходится обращаться не только к общегражданским нормам но и к специальным положениям ве
16649. Дело о послесрочном индоссаменте 89 KB
  Дело о послесрочном индоссаменте Юристы профессионально занимающиеся вексельным правом в свое время наверняка обратили внимание на постановление Президиума ВАС РФ от 5 декабря 2000 г. N 8610/99 так как вопрос разрешенный в нем является едва ли не самым экзотическим о толк...
16650. ДОГОВОР ПЕРЕВОДА ДОЛГА ПО РОССИЙСКОМУ ГРАЖДАНСКОМУ ПРАВУ 301.33 KB
  ДОГОВОР ПЕРЕВОДА ДОЛГА ПО РОССИЙСКОМУ ГРАЖДАНСКОМУ ПРАВУ Материал подготовлен с использованием правовых актов по состоянию на 7 декабря 2000 года В.А. БЕЛОВ Белов Вадим Анатольевич доцент кафедры гражданского права юридического факультета МГУ им. М.В. Ло...
16651. ЮРИДИЧЕСКАЯ ПРИРОДА СДЕЛОК С АКЦИЯМИ, ВЫПУСК КОТОРЫХ НЕ ПРОШЕЛ ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ 82.37 KB
  ЮРИДИЧЕСКАЯ ПРИРОДА СДЕЛОК С АКЦИЯМИ ВЫПУСК КОТОРЫХ НЕ ПРОШЕЛ ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ Материал подготовлен с использованием правовых актов по состоянию на 9 февраля 1999 года В.А. БЕЛОВ Белов Вадим Анатольевич доцент кафедры гражданского права юридиче...
16652. ПРЕДМЕТ ДОГОВОРА СИНГУЛЯРНОЙ СУКЦЕССИИ (УСТУПКИ ТРЕБОВАНИЯ) 77.61 KB
  ПРЕДМЕТ ДОГОВОРА СИНГУЛЯРНОЙ СУКЦЕССИИ УСТУПКИ ТРЕБОВАНИЯ Материал подготовлен с использованием правовых актов по состоянию на 7 декабря 2000 года В.А. БЕЛОВ В.А. Белов доцент кафедры гражданского права юридического факультета МГУ им. М.В. Ломоносова кандид...