Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Ассемблеры (области применения).

Ассемблеры (области применения).

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

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

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

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

Трансляторы - общее название для программ, осуществляющих трансляцию. Они подразделяются на Ассемблеры и Компиляторы - в зависимости от исходного языка программы, которую они обрабатывают. Ассемблеры работают с Автокодами или языками Ассемблера, Компиляторы - с языками высокого уровня.

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

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

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

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

Преобразования программы выполняется в несколько этапов (фаз), взаимосвязь между которыми отображена на рис. 1.

Рис. 1.

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

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

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

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

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

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

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

 


Лицензия