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

 
 
> IAR ARM ассемблер, Преобразовать процедуру в макрос
Sergey_Aleksandr...
сообщение Aug 28 2017, 13:42
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Здравствуйте. В проекте функция реализована как ассемблерная процедура. Состоит из одной инструкции и хотелось бы преобразовать её в макрос, чтобы не тратить такты на вход и выход.
Реализована в *.s файле в виде
Код
    SECTION .text:CODE:NOROOT(2)
    PUBLIC MULSHIFT32
    THUMB
MULSHIFT32
    smull    r2, r0, r1, r0
    BX lr

Далее используется в *.c файлах как обычная функция b2 = MULSHIFT32(*cptr++, a1 - a2) << (s1);

Не зная тонкостей синтаксиса ассемблера IAR попробовал "в лоб" реализовать таким образом
Код
MULSHIFT32 MACRO
    smull    r2, r0, r1, r0
    ENDM


Линкер ругается на неизвестное имя MULSHIFT32. Ключевые слова PUBLIC и EXTERN вызывают ошибку. Кто подскажет, как этот макрос правильно оформить, чтобы можно было использовать его вне *.s-файла?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladislavS
сообщение Aug 30 2017, 11:34
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Если есть возможность не уходить от чистого С/C++, то лучше от него не уходить. Чтобы не возникало потом таких тем как эта. Вот что заставило автора того кода ассемблерную функцию применить? Компилятор не знал команду smmul или программист не смог ему объяснить что он хочет? Я ставлю на второе.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sergey_Aleksandrovi4   IAR ARM ассемблер   Aug 28 2017, 13:42
- - VladislavS   Не занимайтесь ерундой. Умножать с нужной разрядно...   Aug 28 2017, 14:01
|- - Sergey_Aleksandrovi4   VladislavS, спасибо за идею. Это не совсем то, что...   Aug 28 2017, 14:43
|- - jcxz   Цитата(Sergey_Aleksandrovi4 @ Aug 28 2017, 17...   Aug 28 2017, 15:49
- - scifi   Из любопытства попробовал на GCC вот такое: Код#de...   Aug 28 2017, 15:18
- - VladislavS   Во-первых, очень некрасиво не показывать типы испо...   Aug 28 2017, 16:00
|- - jcxz   Цитата(VladislavS @ Aug 28 2017, 19:00) П...   Aug 28 2017, 16:04
- - VladislavS   Дарю Код#define MULSHIFT32(arg1, arg2) ...   Aug 28 2017, 16:14
|- - jcxz   Цитата(VladislavS @ Aug 28 2017, 19:14) Д...   Aug 30 2017, 08:26
- - scifi   Кстати, если в моём эксперименте с GCC сделать так...   Aug 29 2017, 09:41
- - Sergey_Aleksandrovi4   jcxz, всё верно, чужие библиотеки. Портирую mp3-де...   Aug 29 2017, 09:53
|- - jcxz   Цитата(Sergey_Aleksandrovi4 @ Aug 29 2017, 12...   Aug 29 2017, 10:58
- - scifi   Цитата(Sergey_Aleksandrovi4 @ Aug 29 2017, 12...   Aug 29 2017, 10:29
- - Sergey_Aleksandrovi4   Цитата(scifi @ Aug 29 2017, 13:29) Это ма...   Aug 29 2017, 13:04
|- - scifi   Цитата(VladislavS @ Aug 30 2017, 14:34) К...   Aug 30 2017, 16:28
- - VladislavS   Не надо ничего ловить. Надо правильно применять яз...   Aug 30 2017, 17:58
|- - jcxz   Цитата(VladislavS @ Aug 30 2017, 20:58) С...   Aug 30 2017, 20:18
- - VladislavS   Могли бы показать пример кода, где вы CLZ применяе...   Aug 31 2017, 03:58
|- - jcxz   Цитата(VladislavS @ Aug 31 2017, 06:58) М...   Aug 31 2017, 06:12
|- - VladislavS   Цитата(jcxz @ Aug 31 2017, 09:12) А какой...   Aug 31 2017, 07:53
|- - jcxz   Цитата(VladislavS @ Aug 31 2017, 10:53) U...   Aug 31 2017, 08:35
- - KRS   Так у IAR теперь есть GCC inline assembler так что...   Aug 31 2017, 11:15
|- - Obam   Цитата(KRS @ Aug 31 2017, 15:15) Так у IA...   Aug 31 2017, 14:41
|- - KRS   Цитата(Obam @ Aug 31 2017, 17:41) IAR с G...   Sep 3 2017, 17:13
- - Obam   Да, но не GCC.   Sep 4 2017, 07:36
- - KRS   Цитата(Obam @ Sep 4 2017, 10:36) Да, но н...   Sep 4 2017, 08:10


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:56
Рейтинг@Mail.ru


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