Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 65
Текст из файла (страница 65)
(могут быть команды комбинированные, осуществляющие несколько действий с несколькими полями операндов.) Мнемоника команды указывает, что нало выполнять над операндами, и расшифровывается в описаниях и списках команч. Как правило, мнемоники представляют сокрашения английских слов (или полные слова), обозначающих определенные лействия. Например, перемещение данных (п)оке) часто обозначается мнслюникой меч.
Глава 9, Подготовка программ пользователя. т]зыки прсграммнроеания 359 При алгебраической форме записи команда представляет собой выраже- ние — "компонент языка, определяющий способ вычисления некоторого значения" (40). В выражения входят операторы и операнды. Оператор явля- ется символом операции. . Примеры операторов: П вЂ” умножение; П г — деление; П з — операция по модулю; П ь — сложение; П - — вычитание; П « — левый сдвиг; Мнемоническая форме Алгвбраичвскаяформа Опврациисяожеиия) А00 [згс,] т(зе А00 ХП, т)зг А00 АС» « ()зитгтн, Асу А00 Хптетв, У»тек, АСх й00 К16, звтепт сзг — Сзг + згс т)зг = т)зг + кз йСу — йСУ ь (АСх « ((5НХРТИ] Асх = (хаев << з16] .т (тгпетп <<416] зптезт = вктепт + К16 Операции сдвига и инициализации памяти: НОЧ Сптезт, взтеит зптетз - Скее зтпе и Кв НОЧ К8, зеепт Операции умножения с накоплением и округлением результата: ийс[р] Асх, тх, Асу[, Асу] Асу = глс(йсу + (йсх тх]] НАС [р] йСу, тх, АСк, йСу йсу = гт»1((АСУ ь тх) + АСх) ИАСК[р,] тх, К8, [АСх,] йсу Асу = глс(АС» + (тх " К8)) П» — правый сдвиг, П ь — поразрядная операция И; П [ — поразрядная операция ИЛИ.
Операнд определяет объекты, над которыми производятся операции. В качестве таких объектов мо(уг быть значения (константы, переменные) или в какой-либо форме адреса конкретных значений (регистры процессора, ячейки памяти). Со- ответственно при алгебраической записи с помощью операторов прямо указы- ваются действия, которые необходимо выполнить нал операндами. Приведем в качестве примеров зквивалентные записи команд лля процессо- ра ТМЯ320С55 в мнемонической и алгебраической формах ассемблера. Зб) Мнемоническая форма Алгебраическая форме Асс = Асо + *лая АСО + .= *АЛЯ КОНСТЗНТЫ Мнемоническая форма Алгебраическая форма Помещение значения в стек Рзи ятс рияЬ(ясс) Извлечение из стека аяс рср() Повторение команды тереат.(Х16) РОР аяс РРТ х16 П о, а — десятичная система; П в, ь.
ь — двоичная система; (1Р Условие) АЛ = хор ь уор) регистры (тт условие! На = хор * уор: регистры // хсманлв слюхеннл) Аа, хор, уср— // хсмянля уынсхеннят НЛ, хар, уор— Алгоритмы н процессоры цифровой обработки сигналов В некоторых версиях поддерживаются варианты записи выражений, свойст- ненные языкам высокого уровня, например эквивалентны записи операции сложения: Алгебраическая форма записи команд на первый взгляд представляется более общей, не зависящей от конкретного процессора. Однако могут быль особенности записи операторов и особенно обозначений операндов н ассемблерах различных процессоров н фирм. Кроме того, при записи выражений для некоторых операций фактически используется мнемоника этих операций. Например, эквивалентные команды процессора ТМ5320С55 в мнелюнической н алгебраической формах ассемблера имеют вил: Тонкости правил записи и разделения операнлон и различных частей ко- манды могут отличаться и приводятся в описаниях конкретных языков.
Для процессоров платформы С5000 фирмы Т! разработаны лва варианта ас- семблеров с мнемонической и ачгебраической формой записи. Ассемблеры для процессоров фирмы Ап! и ецсел( используют алгебраическую форму записи. Наибольшие особенности но всех смыслах, в том числе и в форме записи команд, имеет ассемблер фирмы АИ. Примеры записи команд: Большинство команд ассемблера этой фирмы так же, как прннеденные вы- ше, могут сопровождаться необязательным условием ее выполнения.
Глава 9. Подготовка программ пользователя. Языки программирования Метка с помощью, которой отмечается расположение команды лля после- дующей ссылки, размещается в начале строки команды или на предшест- вующей строке. Метка заканчивается символом: (двоеточие). 9.2.4. Основные конструкции ассемблера Прн записи операндов и меток используются рахшчные конструкции язы- ка. Рассмотрим основные из этих конструкций. Канста)тта яачяется величиной, которая не изменяется н течение всего времени выполнения программы. Константы бывают числовыми и строчными. Числовые константы могут быть записаны в одной из трех систем счисления — двоичной, десятичной или шестнадцатеричной.
Отрицательпыс константы ассемблером записываются в дополнительном коле 0)ля положительных чисел представление в дополнительном и прямом кодах совпадают, см. главу 3). Длина внутреннего представления константы определяется возможностями процессора и директивами/командами, в которых указана константа.
Например, лля 24-разрядных процессоров ассемблер может использовать внутреннее представление констант длиной 24 и 48 двоичных разрядов 16 и 12 шестнадцатеричных разрядов) — одно или два слона процессора соответственно в зависимости от значения. Система счисления обозначается спецнфикатором, который может либо предшествовать константе, либо записываться за ней. В качестве спецификаторов применяются: П н, ь, з — шестнадцатеричная система; П о (с) — восьмеричная система.
В ассемблере А)31 к спецификатору, стоящему перед числом, добавляется знак (). Примеры записи констант н ассемблере Мо(ого(а: П ьтоооо1 соответствует 33; П зтт соответствует 119; П ан соответствует 29. Дробная десятичная константа может быть записана в одной из лвух форм: лробное число с разделительной десятичной точкой или экспопенциальпая форма с записью основания системы счисления 6 (е). Алгоритмы и процессоры цк вой обработки окгнвпов Прил!еры записи др бнь!х констант в ас е блере ул( ОСа П 1.2 П г.е-5 П о.знг Строчная (знаконая) константа записывается в виде последовательности из одного или нескольких знаков„заключенных в одиночные кавычки.
Внутреннее представление знаковой консшнты соответствует 8-разрядным значениям када АЯСП для каждого знака. Если в константе определено меньше знаков, чем необходимо для заполнения 24-разрядного слова (или двойного слона), при трансляции слева дописываются нули вместо недостающих знаков. Констант в ассемблере Ул(1 ОО: П в' — константа эквивалентна 97 (десятичная) или 61 (шестнадцатеричная); П ' с' — константа эквивалентна 67 (десятичная) ог 43 (шестнадцатеричная); П ' х ' — константа эквивалентна 39 (десятичная) ог 27 (шестнадцатеричная). Цепочки знаков — строки Некоторые директивы ассемблера используют н качестве операнда строку или цепочку, которая представляет собой последовательность знаков, заключенных в кавычки.
Если необходимо включить в строку кавычку, то в это место включаются две последовательных кавычки. Длина цепочки определяется директивой, в которой используется цепочка. Внутреннее представление знаков строки соответствует колу АВС!1. Наример, 'оик ззнваь' определяет цепочку, состоящую из 10 знаков.
Цепочки знаков используются в качестве имен файлов, имен секций и т. д. Символы (символические имена) Символы прилгеняются в качестве меток или идентификаторов в операндах и выражениях. Символ есть строка буквенно-цифровых знаков (А — е., а — 2, 0— 9, $ и ) длиной до 512 символов. В качестве знака в строке не может использанатьея пробел Заглавные и строчные буквы ассемблеры обычно восПРИНИМа>ат КаК раЗЛИЧНЫЕ (НаПРИМЕР, СИМНОЛЫ ЯВС И вас), ЕСЛИ ПРИ тРаНС- ляции не применяется специальные опция.
Символы, которые используются как метки, становятся идентификаторами адресов ячеек памяти, в которых хранятся кодовые слава программы. Онп могут применяться в поле метки только один раз. Символы, используемые в поле операнда, становятся идентификаторами переменных величин, т. е. идентификаторами адресов ячеек памяти данных, где хранятся эти величины.
Эти символы должны быть определены либо директивами ассемблера непосредственно в программном файле, либо в командном файле компоновки. Глава 9. Подготовка программ пользователя. Языки программирования зю : Символы действуют только внутри некоторого программнога модуля, т. е, для каждого символа имеется некоторая область видимости. Соответствующие правила определения и задания области действия символа приводятся в описаниях конкретных версий ассемблера. , Некоторые символы (помимо мнемоник команд и директив ассемблера) являются стандартно определенными или предопределенными„т.
е. они зарезервированы ассемблером и не могут использоваться в качестве идентификаторов. Выражения Выражением является последовательность констант, символов, функш>й, объединенных арифметическими операторами и круглыми скобками. Выражение может быть операндом или частью операнда команды процессора или директивь1. Выражение вычисляется при трансляции, т.
е. ассемблер может взять на се, бя задачу расчета фактического значения операнда. Смысл результата вычисления определяется местоположением выражения в программе. Например, результат может являться адресом или значением какой-либо величины (например, величины сдвига). Вычисление выражения подчиняется правилам алгебры и булевой алгебры. Три главных фактора залают порядок вычисления выражения: П круглые скобки; П ранги арифметических операторов; П направление вычислений. Выражения обычно вычисляются слева направо, если другой порядок вычисления не определяется круглыми скобками или рангами операций.