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

 
 
> 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

Сообщений в этой теме
- 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
- - VladislavS   Если есть возможность не уходить от чистого С/C++,...   Aug 30 2017, 11:34
|- - 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 Текстовая версия Сейчас: 18th July 2025 - 04:18
Рейтинг@Mail.ru


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