Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные этапы(фазы) обработки программы компилятором




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

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

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

- Фаза оптимизации предназначена для уменьшения избыточности программы по затратам времени и памяти. В зависимости от критериев проектирования транслятора данная фаза обработки программы может исключаться из цикла обработки программы.

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

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

Как правило, выходным языком транслятора является машинный язык целевой вычислительной системы. (Целевая ВС - та ВС, на которой программа будет выполняться.)

Язык Ассемблера - система записи программы с детализацией до отдельной машинной команды, позволяющая использовать мнемоническое обозначение команд и символическое задание адресов.

Он позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.

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

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

Язык Ассемблера "в чистом виде" применяется только для написания отдельных небольших частей системного ПО: микроядра ОС, самых нижних уровней драйверов - тех частей, которые непосредственно взаимодействуют с реальными аппаратными компонентами.

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

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

Вопрос №14. Прерывания. Классификация. Виды прерывания, обработка программных прерываний.

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

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

Типы (классы) прерываний

Прерывания можно разделить на два основных класса: внешние (называют асинхронными) и внутренние (синхронные).

Внешние (асинхронные) могут поступить:

  • от таймера;
  • от внешних устройств (прерывания ввода/вывода);
  • от блока контроля питания;
  • с пульта оператора вычислительной системы;
  • от другого процессора или другой вычислительной машины.

Синхронные (внутренние) прерывания можно разделить на две части – программные и остальные:

· при нарушении адресации (выход за пределы программы за пределы массива);

· при возникновении в поле кода операции, которого нет на данной вычислительной системе;

· при делении на нуль;

· при переполнении, исчезновении порядка;

· при обнаружении ошибок четности;

· другие … (например, прерывания супервизора);

· масса программных прерываний.

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

Наличие сигнала прерывания не всегда прерывает выполнение программы, так как процессор может обладать механизмом защиты от прерываний (происходит маскирование, или запрет, отдельных сигналов прерывания).

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

  • с относительными приоритетами. При этой дисциплине обслуживания, если обрабатывается прерывание, то его обработка продолжится до окончания и только после этого произойдет переход на обработку прерывания (конечно, если оно есть) с наивысшим приоритетом;
  • с абсолютным приоритетом. В этом случае, если во время обработки прерывания поступает прерывание с более высоким приоритетом, то происходит прерывание самой программы обработки прерывания с меньшим приоритетом;
  • по принципу стека (дисциплина LCFS – last come first served) – последним пришел – первым обслужен). При этой дисциплине обслуживания запросы на прерывания с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом.

 

 


Уровень приоритета прерываний

 




Поделиться с друзьями:


Дата добавления: 2015-05-29; Просмотров: 1110; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.