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

 
 
> Как сделать асемблернуую вставку?
Professor
сообщение May 12 2006, 17:59
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 35
Регистрация: 12-05-06
Из: Украина Харьков
Пользователь №: 17 045



Как сделать асемблерную вставку в IAR Systems Ew23 Evaluation version? Был бы очень признателен за помощ....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение May 13 2006, 07:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата([banned] @ May 12 2006, 22:08) *
у крутых IAR и Keil асм вставки ПО МОЕМУ в виде отдельных файлов нужно делать.

Не нужно, но вне зависимости от "крутости" крайне желательно, по причине того, что С компилятор
не разбирается во вставленном ASM коде и вынужден относиться к нему как к "черному ящику".
Поскольку что ждать от ящика непонятно, то компилятору приходится, как минимум, ломать оптимизацию кода в предположении, что вставленный кусок мог попортить любые регистры.

А "профессору" - документы идущие с компилятором НАДО чититать. Просто возьмите за правило постепенно перед сном методично читать, пока не прочитаете от корки до корки.
Если "срочно" - ищите '__asm' в разделе extended keywords.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Professor
сообщение May 13 2006, 10:06
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 35
Регистрация: 12-05-06
Из: Украина Харьков
Пользователь №: 17 045



Цитата(zltigo @ May 13 2006, 10:40) *
Цитата([banned] @ May 12 2006, 22:08) *

у крутых IAR и Keil асм вставки ПО МОЕМУ в виде отдельных файлов нужно делать.

А "профессору" - документы идущие с компилятором НАДО чититать. Просто возьмите за правило постепенно перед сном методично читать, пока не прочитаете от корки до корки.
Если "срочно" - ищите '__asm' в разделе extended keywords.


Я читал...
Что я нашел:
1. If any assembler-specific additions are needed in the header file, these can be added
easily in the assembler-specific part of the file:
#ifdef __IAR_SYSTEMS_ASM__
(assembler-specific defines)
#endif

2. The asm keyword assembles and inserts the supplied assembler statement in-line, for
example:
asm("MOV R4,R7");

Первое не работает .... Как я только не пытался.... И в С файле создавать вставку и в h.....
Второе только для одной строки а значит не подходит..... Т. к. надо реализовать целую функцию на асемблере... Может есть какие-нибудь еще способы?

Сообщение отредактировал Professor - May 13 2006, 10:07
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 13 2006, 10:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Professor @ May 13 2006, 13:06) *
Я читал...


Читаем ЕЩЕ раз особенно слова "You can write several consecutive inline assembler instructions":

Код
asm, __asm
The asm and __asm extended keywords both insert an assembler instruction. However, when compiling C source code, the asm keyword is not available when the option --strict_ansi is used. The __asm keyword is always available.
Note: Not all assembler directives and operators can be inserted using this keyword.
Syntax
asm ("string");
The string can be a valid assembler instruction or an assembler directive, but not a comment. You can write several consecutive inline assembler instructions, for example:

asm ("Label:  nop\n"
     "        b Label");
where \n (new line) separates each new assembler instruction. Note that you can define and use local labels in inline assembler instructions.

For more information about inline assembler, see the ARM® IAR C/C++ Compiler Reference Guide.


Только зачем эти извращения я не знаю :-( Берете и пишете по человечески......


Цитата
1. If any assembler-specific additions are needed in the header file, these can be added

А это не может не работать. Просто это из "другой оперы".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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