Структура командной строки ассемблера TMS320C6x


 

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

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

Метки должны удовлетворять следующим условиям:

- первый символ метки должен быть буквой или символом подчеркивания (_), после которого следует буква;

- метки могут включать вплоть до 32 алфавитно-числовых символов.

Не рекомендуется использовать метку в команде, которая исполняется параллельно с предшествующей командой.

Параллельные линии (||) обозначают команду, которая выполняется параллельно с предшествующей командой. Для команды, которая не выполняется одновременно с предшествующей командой, это поле заполняется пробелом.

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

Поле условия является не обязательным (дополнительным).

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

Для условий доступно пять регистров РОН: A1, A2, B0, B1 и B2.

Принцип выполнения условных команд показан в табл. 3, где символ «!» показывает инверсию условия (его отрицание).

Если поле условия не используется, команда выполняется всегда.

В поле команды записывается мнемоника команды, директива ассемблера или обращение к макрокоманде.

Директивы ассемблера начинаются с точки и являются командами для ассемблера. Они управляют процессом ассемблирования или определяют структуры данных в программе на языке ассемблера. Поэтому на машинный язык (язык двоичных слов) директивы не переводятся.

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

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

В этом поле можно:

- указать конкретное функциональное устройство (например, .D1);

- указать только функциональный тип устройства (например, .М), а ассемблер сам назначит конкретное устройство (например, .М2);

- ничего не указывать. В этом случае ассемблер сам назначит устройство на основе поля мнемоники и поля операндов.

Когда операнд исходит из РОН противоположной стороны, имя устройства должно включать символ «х», указывая тем самым, что команда использует одну из перекрестных шин. Например, ADD .L1Х A0,В1,A3.

Поле операндов обязательно практически для всех команд и директив. К операндам в ассемблере предъявляются следующие требования:

- операнды должны располагаться на той же стороне ЦПУ, что и модуль, выполняющий над ними операцию;

- только один операнд за выполняемый пакет может исходить из РОН противоположной стороны.

В поле операндов через запятую можно указать:

- регистры, которые содержат данные;

- данные в числовой форме;

- адреса операндов (указываются только в командах загрузки и хранения).

РОН поддерживают данные разрядностью от 16 до 40 для чисел с фиксированной запятой и 64-разрядные данные для чисел с плавающей запятой. Величины, превышающие 32 разряда, как, например, 40- и 64-разрядные, загружаются в регистровые пары. При этом 32 младших разряда числа размещаются в чётном по номеру регистре, а остальные 8 или 32 старших разряда в следующем, бóльшим по номеру нечётном регистре. В ядре ЦСП для 40- и 64-разрядных данных можно образовать 16 регистровых пар (табл. 4). В синтаксисе языка ассемблера двоеточие между именами регистров обозначает регистровую пару, причем нечётный регистр указывается первым.

Операндом могут быть константа, строка символов или выражение.

Допустимы шесть типов констант:

- Двоичное целое. Является строкой до 32-х двоичных цифр, заканчивающейся суффиксом В или b. Например, 01b, 0100В.

- Восьмеричное целое. Является строкой до 11 восьмеричных цифр, заканчивающейся суффиксом Q или q. Например, 10Q, 236q.

- Десятичное целое. Является строкой десятичных цифр без суффикса, определяющей числа от -2 147 483 648 до 4 294 967 295.

- Шестнадцатеричное целое является строкой до 8 шестнадцатеричных символов, заканчивающейся суффиксом H или h. Шестнадцатеричная константа должна начинаться с десятичной цифры. В противном случае она дополняется старшим разрядом, в котором записывается ноль.

- Символьная константа представляет собой единственный символ, заключённый в апострофы;

- Константы текущего ассемблирования.

Если для присвоения символу численного значения используется директива .set, то символ становится численной константой. Однако чтобы использовать эту константу в выражениях, число, которое присваивается этому символу, должно быть абсолютным. Например, К .set 3, но не К .set -3. Директива .set может использоваться и для присвоения символьным константам регистровых имён. В этом случае символ становится синонимом регистра. Например, К .set А2.

Символьная строка является строкой символов, заключённой в двойные кавычки. Например, 14-символьная строка «типовая программа» запишется на ассемблере как "sample program", а 8-символьная строка «план ''C''» – как "PLAN ""C"" ". Символьные строки используются для имён файлов, названий разделов в соответствующих директивах ассемблера, операндов директив .string.

Выражение – это набор констант и символов, разделённых арифметическими операторами. Значения 32-разрядных величин выражения лежат в диапазоне от -2 147 483 648 до 2 147 483 647 для знаковых величин и от 0 до 4 294 967 295 для величин без знака.

Порядок вычисления выражения определяется тремя основными факторами:

- Круглые скобки. Выражения в круглых скобках всегда вычисляются первыми: 8/(4/2) = 4, но 8/4/2 = 1.

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

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

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

- комментарий может начаться в любом столбце командной строки, когда он следует за символом точкой с запятой (;);

- комментарий должен начинаться в первом столбце командной строки, когда следует за символом звездочка (*).

Комментарий может содержать любые символы, включая пробелы.

 



Дата добавления: 2020-10-25; просмотров: 457;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.012 сек.