Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CCS TI
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
bav
У меня в проекте основная программа написана на C++. Есть модуль, критичный ко времени, он у меня написан на ассемблере. Как его подключить к основной программе?

history:
файл на ассемблере сохранен как conv.sa - все работает, передача параметров не вызывает вопросов. Но...компилятор не дает мне параллелить инструкции. В хелпе нашел, что нужно делать файл conv.s - но при компиляции появляется куча ошибок. компилятор не понимает директивы cproc-endproc, .reg... что делать? как передавать параметры?

всем заранее спасибо!!!
Hercules
Цитата(bav @ Sep 7 2005, 14:45)
файл на ассемблере сохранен как conv.sa - все работает, передача параметров не вызывает вопросов. Но...компилятор не дает мне параллелить инструкции.
*


Обычно у TI файлы с расширением .sa - это файлы написанные на линейном ассамблере. Линейный ассемблер - это ни есть ассемблер в чистом виде.

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

При компиляции файлов на линейном ассемблере компилятор сам все что можно распараллелит. Вы можете задать ключик -k (если я не ошибаюсь) и тогда компилятор сохранит ассемблерный файл, который у него получился после оптимизации Вашего файла на линейном ассемблере. Вот в этом ассемблеррном файле Вы и можете посмотреть как у Вас все распараллелилось.

Более подробно про линейный ассемблер и опитимзацию кода можно почитать тут:
TMS320C6000 Programmer’s Guide (Literature Number: SPRU198)
TMS320C6000 Optimizing Compiler User’s Guide (Literature Number: SPRU187)

Цитата(bav @ Sep 7 2005, 14:45)
как передавать параметры?
*


Первые десять аргументов размещаются в регистрах A4, B4, A6, B6, A8, B8, A10, B10, A12, and B12 (т.е. первый аргумент в A4, второй в B4 и так далее). Если нужно передать long, double или long double в этом случае используются регистровые пары: A5:A4, B5:B4, A7:A6, и так далее.

Если Вы пишите на линейном асемблере, то компилятор сам разместит ваши аргументы в соответствующих регистрах.

Более подробно про calling convention можно почитать тут (стр. 8-18):
TMS320C6000 Optimizing Compiler User’s Guide (Literature Number: SPRU187)

Best regards,
Hercules
Seishel
А такой маленький вопросик в догонку, а как можно писать ещё кроме как на линейном ассемблере. если какой то кусочек кода хотелось бы написать с меньшей прожорливостью в МИПсах??? как сделать файл с нелинейным ассемблером и как распараллеливать действия???
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.