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.


 

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

29352. Functional Styles. Newspaper Style 33.05 KB
  Not all the printed materials found in newspapers come under newspaper style. Only materials which perform the function of informing the reader and providing him with an evaluation of information published can be regarded as belonging to newspaper style. English newspaper style can be defined as a system of interrelated lexical phraseological and grammatical means which is perceived by the community as a separate linguistic unity that serves the purpose of informing and instructing the reader.
29353. General Notes on Stylistics. It’s subject and Object 40.48 KB
  It deals mainly with two interdependent tasks: The investigation of the inventory of special language media which secure the desirable effect of the utterance The investigation of certain types of texts which are distinguished due to the choice and arrangement of language means. The types of texts that are distinguished by the pragmatic aspect of communication are called functional styles of language FS; the special media of language which secure the desirable effect of the utterance are called stylistic devices SD and expressive means...
29354. Expressive means and stylistics devices 24 KB
  All stylistic means of a language can be divided into expressive means which are used in some specific way and special devices called stylistic devices. The expressive means of a language are those phonetic means morphological forms means of wordbuilding and lexical phraseological and syntactical forms all of which function in the language for emotional or logical intensification of the utterance. These intensifying forms of the language have been fixed in grammars and dictionaries. The most powerful expressive means of any language...
29355. Stylistic Classification of the English Vocabulary 53.1 KB
  This is important for the course in as much as some SDs are based on the interplay of different stylistic aspects of words. The literary vocabulary consists of the following groups of words: common literary; terms and learned [′ lə:nid] words; poetic words; archaic words; barbarisms and foreign words; literary coinages and noncewords. The colloquial vocabulary includes the following groups of words: common colloquial words; slang; jargonisms; professionalisms; dialectal words; vulgar words; colloquial coinages. The common...
29356. Тетрадная форма представления программ в языковых процессорах САПР 23.5 KB
  Списки тетрад. Удобной формой представления бинарных операций являются тетрады вида: оператор операнд1 операнд2 результат ABC–D B C T1 A T1 T2– T2 D T3T1 T2 T3 –временные переменные формируемые транслятором.Важным свойством списка тетрад является то что тетрады располагаются строго в соответствии с порядком в котором должны быть выполнены операторы при реализации программы.
29357. Алгоритм перевода выражений в польскую запись 37.5 KB
  При работе семантических программ широко используется набор данных с организацией в виде стека. Операнды переписываются в выходную строку а операторы заносятся в стек. В зависимости от приоритета операторов при записи в стек оператор может вытолкнуть из стека другой оператор который последовательно записывается в выходную строку. Работа со стеком организуется так:1.
29359. Машинно-независимая оптимизация линейных участков программ 26.5 KB
  Покажем простейшие преобразования линейных и циклических участков для тетрадной формы программ:Машиннонезависимая оптимизация линейных участков программЛинейным участком программы называется последовательность операцийкоманд которая не содержит условных переходов возможно кроме последней операции. Для оптимизации линейных участков в простейшем случае используется два основных преобразования:1. В списке тетрад выделит границы участков включающих вычисления выражений по операторам присвоения;2.
29360. Машинно-независимая оптимизация циклических участков программ 28 KB
  Рассмотрим возможные преобразования над цикличными участками покажем на примере констрии цикла с заданным количеством повторения.В языке Паскаль такая циклическая конструкция имеет следующий вид: for i: =a to b dobeginтело циклаend;В бейсике: for i =a to b step Sтело циклаnext iв таких конструкциях а и b – границы изменения переменной циклаНад подобными конструкциями выполняются следующие оптимизационные преобразования:1. вынесение из тела цикла операций операций которые не измен. в теле цикла;2.