Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

55xx asm. Не понимаю что делает кусок кода в dsplib.

Отправлено 2b|!2b?.. 06 сентября 2007 г. 19:32


Смотрю исходники dsplib, писанные на ассемблере.

Смотрим на реализацию функции iir32 из файла iircas32.asm

short oflag = iircas4(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nbiq, ushort nx)


В AR3 при передаче параметров в функцию сохранился адрес на первый элемент dbuffer.

Далее вижу вот это

;Save pointer to index at dbuffer[0]
mov XAR3, XAR5

и позже

mov *AR5, AR3 ;init AR3 offset to buffer start

Как я это понимаю регистр AR3 инициализируется первым элементом из буффера dbuffer (у меня он равен 0). Зачем? Тем более что потом используется косвенная адресация с использованием регистра AR3:

mpym *AR1, uns(*AR3+), AC3 ; b2jH * ud2jL

Как я могу взять по адресу AR3 значение (*AR3), если у меня там не адрес?

Я посмотрел по другим примерам. В функции fir вообще что-то читается из 0-го адреса явно.

MOV #0, h_ptr ;point to first coefficient
MPYM *h_ptr+, *db_ptr+, AC0

Как такое может быть? Разъясните пожалуйста.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 2 на три:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru