- •1. Цель работы
- •2. Структура проекта
- •3. Рекомендуемый путь и этапы создания проекта в vdsp
- •3.1 Пример и описание .Ldf файла
- •Search_dir() - определение путей к текущей рабочей директории и к директории lib.
- •3.2 Структура простейшего .Asm файла
- •Rti; nop; nop; nop; /* 0x0008: irql1*/
- •3.3 Компоновка проекта и создание исполняемого .Dxe файла
- •Rti; nop; nop; nop; /* 0x0008: irql1*/
- •Rti; nop; nop; nop; /* 0x0020: sport1 transmit*/
- •Rti; nop; nop; nop; /* 0x0028: Timer*/
- •4. Запуск и отладка проекта.
- •4.1 Запуск проекта Lab1
- •4.2 Отображение содержимого памяти
- •4.3 Отображение содержимого регистров
- •4.4 Построение графиков
- •5. Задание к лабораторной работе
- •1. Особенности и типы команд сигнального процессора
- •2. Используемые условия
- •2.1 Подробное описание регистров состояния и значения их битов
- •2.2 Логическое описание условий (cond), используемых с оператором if
- •2.3 Условия завершения цикла do until (term)
- •3. Многофункциональные инструкции
- •3.1 Операции alu/mac с одновременным чтением памяти данных и памяти программ
- •3.2 Чтение памяти данных и памяти программ
- •3.3 Вычисления с чтением из памяти
- •3.4 Вычисления с записью в память
- •3.5 Вычисления с пересылкой регистр-регистр
- •4. Инструкции alu, mac и shifter
- •4.1 Инструкции и стандартные функции
- •4.2 Инструкции и стандартные функции
- •4.3 Инструкции и основные функции
- •5. Команды пересылки данных
- •6. Инструкции управления исполнением программы
- •If eq jump my_label; call (i6);
- •7. Другие инструкции и команды не вошедшие в
- •8. Обобщённая таблица команд
2.2 Логическое описание условий (cond), используемых с оператором if
Синтаксис |
Условие выполнения |
Истинно, если: |
EQ |
Равно нулю |
AZ=1 |
NE |
Не равно нулю |
AZ=0 |
LT |
Меньше нуля |
AN XOR AV=1 |
GE |
Больше или равно нулю |
AN XOR AV=0 |
LE |
Меньше или равно нулю |
(AN XOR AV) OR AZ=1 |
GT |
Больше нуля |
(AN XOR AV) OR AZ=0 |
AC |
Перенос в АЛУ |
AC=1 |
NOT AC |
Нет переноса в АЛУ |
AC=0 |
AV |
Переполнение АЛУ |
AV=1 |
NOT AV |
Нет переполнения АЛУ |
AV=0 |
MV |
Переполнение MAC |
MV=1 |
NOT MV |
Нет переполнения MAC |
MV=0 |
NEG |
Операнд X последней команды ABS был отрицателен |
AS=1 |
POS |
Операнд X последней команды ABS был положителен |
AS=0 |
NOT CE |
Счетчик не пуст |
- |
FLAG_IN |
Значение на выводе FI. (Доступно только с командами JAMP и CALL). |
Последнее значение на выводе FI=1 |
NOT FLAG_IN |
Значение на выводе FI. (Доступно только с командами JAMP и CALL) |
Последнее значение на выводе FI=0 |
2.3 Условия завершения цикла do until (term)
Условия завершения цикла DO UNTIL включают в себя все условия выполнения оператора IF за исключением трех последних условий: NOT CE, FLAG_IN, NOT FLAG_IN, а также содержат два дополнительных условия:
CE - счетчик пуст;
FOREVER - вечный цикл при отсутствующей части инструкции UNTIL.
3. Многофункциональные инструкции
Многофункциональные инструкции в наибольшей мере отражают возможности, обеспечиваемые архитектурой процессора данного семейства. Система команд реализует пять типов многофункциональных инструкций. Отдельные части многофункциональной инструкции разделяются запятой, заканчивается многофункциональная инструкция, как и любая другая, точкой с запятой.
3.1 Операции alu/mac с одновременным чтением памяти данных и памяти программ
Вычислительной частью инструкции такого типа является любая безусловная инструкция ALU или любая инструкция MAC, кроме насыщения. Ее следующий Х-операнд всегда загружается из памяти данных, а следующий Y-операнд из памяти программ. Результат вычислений всегда помещается в регистр результата (MR или AR), а не в регистр обратной связи (MF или АF).
Ниже приводится пример такой инструкции:
MR=MR+MX0*MY0 (SS), MX0=DM (I0, M0), MY0=PM (I4, M5);
Первая часть ее (до первой запятой) суммирует предыдущее содержимое регистра MR с произведением значений регистров МХ0 и MY0 в начале цикла, причем оба операнда считаются знаковыми (SS). Вторая и третья части этой многофункциональной инструкции в конце того же процессорного цикла загружают два новых операнда. Один из них считывается из памяти данных (DM), указатель на данные находится в индексном регистре I0, после загрузки происходит пост-модификация указателя значением, содержащемся в регистре М0. Другой операнд считывается из памяти программ (РМ), указатель на данные находится в индексном регистре I4, после загрузки происходит пост-модификация указателя значением, содержащемся в регистре М5.