[an error occurred while processing this directive]
Как вариант - дополните кусок сохранением и восстановлением необходимых регистров.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 13 июля 2005 г. 03:28
В ответ на: Вопросы по ассемблеру для 62-х TMS отправлено SSS 12 июля 2005 г. 14:59

Но сначала аккуратно замените в приведенном Вами ассемблерном куске B14 на B6, A15 на A9, т.к. регистры B6, A9 не используются.

Теперь сохранение регистров.
Делается это так.
STW B3,*B15--[1]
STW B10,*B15--[1]
STW B11,*B15--[1]
STW B12,*B15--[1]
STW B13,*B15--[1]
STW A10,*B15--[1]
STW A11,*B15--[1]
STW A12,*B15--[1]
STW A13,*B15--[1]
STW A14,*B15--[1]
Сохранение вставляется перед первой к-дой приведенного Вами ассемблерного куска.
Т.е. перед
MVK .S2 512, B9
|| MVK .S1 0, A3

Регистры B14,A15 не сохраняются, нет нужды после замены их на B6,A9 в исходном тексте.
Но зато сохраняется регистр B3 (адрес возврата). Следовательно его можно использовать в ассемблерном куске. Вместо регистра B15. Аккуратно заменяете в приведенном Вами куске B15 на B3.

Восстановление регистров.
Вставить его нужно непосредственно перед командой возврата, т.е. перед B .S2 B3


В результате завершение ассемблерного куска будет таким
...
LDW *++B15[1],A14
LDW *++B15[1],A13
LDW *++B15[1],A12
LDW *++B15[1],A11
LDW *++B15[1],A10
LDW *++B15[1],B13
LDW *++B15[1],B12
LDW *++B15[1],B11
LDW *++B15[1],B10
LDW *++B15[1],B3
NOP 4
B .S2 B3
STW A8,A4
NOP 4


При условии, что кусок все-таки делает то, что нужно, если не считать ошибку с регистрами, которая и устраняется вышеописанным.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru