реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> CCS TI, asm и cpp в одном проекте
bav
сообщение Sep 7 2005, 11:45
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



У меня в проекте основная программа написана на C++. Есть модуль, критичный ко времени, он у меня написан на ассемблере. Как его подключить к основной программе?

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

всем заранее спасибо!!!
Go to the top of the page
 
+Quote Post
Hercules
сообщение Sep 14 2005, 14:09
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 2-03-05
Пользователь №: 3 000



Цитата(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


--------------------
Best regards,
Hercules
Go to the top of the page
 
+Quote Post
Seishel
сообщение Feb 9 2006, 15:52
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 38
Регистрация: 9-02-06
Пользователь №: 14 149



А такой маленький вопросик в догонку, а как можно писать ещё кроме как на линейном ассемблере. если какой то кусочек кода хотелось бы написать с меньшей прожорливостью в МИПсах??? как сделать файл с нелинейным ассемблером и как распараллеливать действия???
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 02:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016