Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 66
Текст из файла (страница 66)
Внутри скобок направление вычислений также слева направо при равенстве рангов операций. Примеры выражений будут рассмотрены ниже. Выражения могут быть абсолютными и относительными (перемещаемыми). Абсолютное выражение состоит из абсолютных величин, например, констант или символов (меток), определяемых в абсо>потнол1 режиме трансляции. Относительное выражение состоит из относительных величин или композиции абсолютных и относительных величин. Операторы Олераяюр является символом операции, которая должна быть выполнена.
Примеры некоторых опеРатоРов приведены выше Среди операторов выделяют унарные, котоРые используются с одним операндол1 (например, знаки Алгоритмы н процессоры цифровой обрабоп<н сигналов числа). Ранги операторов задают порядок выполнения соответствуюпшх операций в выражении. Функции В некоторых ассемблерах используются в<тдраендые функ<<ли для поддержки преобразования данных, сравнения строк, математических вычислений и т. л. Пример математических функции ассемблера Мо>ого[а: О нлх — выбор лп>ксимального значения; П н> и — выбор минимального значения; [:) дно — случайное число; [:г эон — знаковая функция: П этн — синус.
Эти н другие подобные функции можно использова>ъ в выражениях ассемблера. 9.2.5. Средства макроассемблера Язык лгакроассемблера отличается от языка ассемблера наличием макро- средств, облегчающих составление программ. К таким средствам относят макрокоманды. срелства организации повторений (циклов) отдельных команд и блоков команд, организацию условного ассемблирования (трансляции) и т. д. Следует отыстить, что макросредства не создают другой конечный продукт, но избавляют программиста от некоторой рутинной работы, например, от многократной записи одной команды при необходимости ее повторения.
Организация условного ассемблирования может производиться как с помошью макросредств, так и с помощью директив условного ассемблирования. lлввв а Подготовка программ пользователя, )г[зыкн программирования 365 При использовании подпро>рамм в текст исходной программы включается команда сльь, которая реально будет выполняться в процессоре.
При ес обработке происходит передача управления в другое место памяти программ. При использовании макрокоманды сс имя (мнемоника) ассемблером заменяется прн трансляции на последовательность команд, определяел>ь>х этой мнемоникой. Вышеуказанное приводит к тому, что время выполнения программы при использовании макрокоманд сокрашается (по сравнению с использованием подпрограмм) за счет отсутствия команд переходов. При этом длина выполняемой программы (и место, занимаелюе програмлюй в памяти) увеличивается за счет многократного повторения команд процессора, входяших в макрокоманду. Макрокомандами можно также объявить часто используемые программистом типовые последовательности действий (процедуры) н создать из них библиотеку.
При использовании библиотеки пет необходимости включения текстов макрокоманд в каждую исхолную программу. Макрокоманды могут быть вложенными друг в друга. Макроопределение и макровызов Макроопределением является набор исхолных ассемблерных строк. включавший команды процессора, мак[юкоманды и директивы ассемблера, который должен выполняться процессором в соответствии с определяемой макрокох>аидой. Макроопределение обычно располагается либо в начале исходной программы (во всяком случае, до вызова макрокоманды), либо в библиотеке макроопределений, вызываемой специальной директивой, например ндсьтв. Мокроопреде,гение обычно имеет следуюшую структуру: <и>ии ыакроксмакдьо НАСВО [сдисок параметров) [;коиыектархй[ Макрокоманды При разработке программ часто возникает необходимость в повторении (иногда с модификациями, при других параметрах) некоторой группы команд.
Такие группы повторявшихся команд можно оформить как процедуру или подпрограл>ь>у. Макроассемблер позволяет применить иной вариант краткой ссылки на часто используемую последовательность команд: такую послеловательность можно определить один раз как большую комаплу— макрокоманду с уникальной мнемоникой, не совпадаюшсй с мнемоникой команд процессора. Макрокоманду после определения се в начале про>раммы можно рассматривать как входящую в систему команд процессора. Такилг образом, использование подпрограмм (процедур) и макрокоманд позволяет сократить длину исходной програыл>ь> и повысить ее "читасмость". Но между этими конструкциялп< языка имеются сушественные различия.
последовательности ксыаид и директив — тело макрокоманды Директива начала (нлсво) и директива конца макро (днвн) являются,чдхро<)ирскд>ивами, специфичными в каждом ассслгблере, которые открывают и завершают мак рооп ределен ие соотвстст вен но. Имя макрокоманлы размешаегся в поле метки, т. е. начинается с первой позиции ассемблерной строки. Последовательность параметров макрокоманды [список ддоаывтрод[ записывается через запятую в поле операнда ассемблерной строки. Параметры в макроопределении явлшотся формальными и заменяются на Фактические после макровызова.
Макроопрепеленис Алгоритмы и процессоры цифровой обрабоми сигналов может не иметь параметров. Через параметры в макроопределении могут задаваться любые операнды и метки. Макровмзов имеет следуюшую структуру: ) <имя макрокоивн,пм> )список параметров) (;ковментариа) Имя макрокоманды, расположенное в поле мнемоники команды, долл(но совпадать с именем, расположенным в поле метки соответствующего макроопределения. Последовательность величин (нли символов), являющихся фактическими параметрами, записывается через запятую в поле операнда ассемблерной строки. Параметры по количеству и порядку следования должны соответствовать формальным параметрам в макроопределении. Каждый параметр может быть константой или выражением любого типа, распознаваемого ассемблером.
Приведем пример (ассемблер Мо(ого1а). Представленная ниже последовательность строк определяет макрокоманду с именем 1нсх1: 1ВСХ1 НАСЯО паче Х:(А2), ХО почв ХО, АО Ьпс моче АО,Х:(А2) Макрокоманда тнсх1 будет вызвана при помешенни в текст исходной про- граммыы строки НН1 1ВСХ1 с именем макрокоманды тнсх1 в поле мнемоники. Макроассемблер поменяет зту строку на команды процессора, т. е.
на послеловательность команд, записанных в макроопределении. .Макрокоманда ьисх1 имеет ограниченное применение, т. к.может быть использована только с ячейкой памяти х: (Аг) . Допустимо расширение сферы применения макрокоманды, и она может использоваться с любой ячейкой памяти, если ввести формальный параметр. Макроопределение: 1ВСХ5 НАСАО ААС > передача всего операнда моче АРС,ХО > параметр передается квк теис> вове ХО, АО 1пс А моче АО, ААС Глава д ПОАтг прогр мм л геля яэ про,рамми,а„„я При использовании макровызова с фактическим параметром, например, ииз 1нсхз х: гаг) зтот макровызов будет заменяться последовательностью команд, в которой можно использовать произвольный операнд. 9.2.6.
Средства организации стандартных структур Команды повторения Процессоры имеют команды, позволяюшне аппаратно организовать повторе- ние одной или нескольких команд, т. е. осушествлять арифметический цикт. Например, повторение одной команды заданное число раз: ВЕР $25 ; ОБР5бХХХ Иоеопо1а Арт к1б г тнязг005000 11 Повторение блока команд: Арта <метка>; ти512005000 тт В соответствии с указанной конструкцией будут повторяться все команды между данной и отмеченной меткой <метка>. Команды организации цикла Не от екоторые процессоры имеют команлы, позволяющие организовать цикл, например: 00 <меткв> ОВТ1Ь <условие> ) АОБР21хх АО1 ОО ..
ЕВООО ОЗР5бХХХ Моеого1а Циклы различного типа можно осуществлять с помошью директив ассемблера. Например: ° РОА то Оо евереят ° ЕИЛ1ЬЕ ЕВОЕ вссемспер Иоеого'в г ассемблер г1100 г вссемблер гььсс Ассемблеры обычно имеют набор средств, которые позволяют при написании программ избавиться от некоторых формальных операций типа повторения команд процессора и использовать такие стандартные логические структ отру уры, как циклы разных типов и ветвления, рекомендуемые методами структурного программировании. Ассемблер генерирует коды, соответствуюшие стандартным структурам, и вставляет их в исходный текст программы.
Это позволяет получать более эффективные программы и улучшает их читаеыость. К средствам организации стандартных структур можно отнести перечисленные ниже. Алгоритмы и процессоры цифровой обработкм смгнзлоз Глава 9. Подготовка программ пользователя Языки программирования ЗЮ Зол Организация ветвлений Для организации ветвлений в програмлте можно использовать директивы ассемблера. Например: л1г Медале зеио1г т ассемблер Ао1 .1Г .ЕЬЗЕ .ЕИОЕГ т ассемблер тт .1Г .Е1,ЗЕ .ЕИО1 : ассемблер Иоього1а л1 .зеьве .зеиотг ; ассемблер альбо 9.2.7. Совместимость ассемблеров различных процессоров К к же отмечалось, языки ассемблера являются машинно-ориентироак уже о и ванными языками и. следовательно, лля каждого типа процессоров сушествует свой язык.
Фирлты — производители процессоров выпускают ЦПОС семействами. совместимыми на уровне колтанд, и эти селтейства илтеют обший ассемблер. Помимо собственно ассемблера общим является весь пакет программных средств поддержки разработки, вюлючаюшии также С- компилятор и чругие продукты. Приведем примеры подобных семейств.
Семейства процессоров Фирмы Т! ЕЗ ТМ8320С!х/С2х/С24х/С5х, ТМБ320С54х, ТМ8320С55х, ТМ83д)СЗх/4х П оцессоры совместимы на уровне асссмбле(и. но не обьектных кодов. Выбор типа процессора лля генерации нужного кода осушествляется шр рективой .легзьоо. С) ТМЬ320С6000(С62х/С64х/С67х) Платформа процессоров С6000 включает как процессоры с фиксированной точкой С62х и С64х, так и процессоры с плаваюшей точкой С67х. Однако ассемблер (так же, как С-компилятор) — обший. Это объясняется тем, что процессоры обладают практически общим ядром П ЦПУ, и С67х и С64х представляют некоторые расширения С62х. Все колтаплы, производимые в С62х (фиксированная точка), выполняются акж т евС67х и С64х.
В С67х добавлены команды обработки данных в формате с плавающей точкой. В С64х расширен набор колтанд процессора с фиксированной точкой, прежле всего за счет введения и обработки новых тинов данных. Идентификация типа процессора производится путем записи соответствуюших колов в регистр управления процессора. Следует отмстить, что ассемблеры различных семейств процессоров Т! имеют много обшего. Это касается конструкций языка, состава лиректив, пра- вил их записи, опций, состава пакетов и т.д.
Отличия относятся, главным образолт, к системе команд процессоров. Семейства процессоров Фирмы Мотого1а Фирма Мотого1а выпускает несколько семейств процессоров с фиксированной запятой 1341: Е)8Р5600, ЕтБР56300, ЕЖР56600, ЕЗБР56800. Для программирования этих процессоров используется обший язык асселтблера, описанный в [341.
Однако программа ассемблеров у каждого семейства своя (азто56х.ехе, аяп56300.ехе, амп56600.ехе, аглп56800.ехе), так же, как и свои компиляторы языка С. Некоторые другие программы, вхолшцие и пакеты поддержки разработки лля различных селтейств, одинаковы. например компоиовгдики, библиотекари. Семейства процессоров Фирмы А01 Общее программное обеспечение имеют 16-разрялные процессоры с фиксированной запятой АЕ)8Р-217х, АЕтБР-2!Ох, АЕт8Р-216х н АЕтБР-2! !5. Семейство процессоров АКР-2!8х, АЕ)БР-219х обладает обшилт программным обеспечениелц включая ассемблер, заключенным в интегрированную среду Ч!зоа)Е)БР, в состав которой входят и отладчики.