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

 
 
> Вставки ассемблера в код C, как это грамотно делать в IAR
Petka
сообщение Dec 6 2006, 10:34
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Иногда приходится Си сопрягать с ассемблером (например для получения ID кода камня, для манипуляций к кэшом и подобные). Как это грамотно осуществить в IAR? Если использовать inline ассемблер, то как туда передавать/возвращать значения? Если подключать внешние асмовские файлы, то как это грамотно сделать? Буду благодарен любым советам и примерам. Сходу поиск по форуму грамотного ответа дал.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IV_K
сообщение Dec 6 2006, 12:33
Сообщение #2


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

Группа: Свой
Сообщений: 121
Регистрация: 17-06-05
Пользователь №: 6 087



#pragma diag_suppress=Pe940
вот например чтение регистра CPSR, в сях его не прочитать..

#pragma optimize=no_inline
static unsigned long get_APSR( void )
{
/* On function exit,
function return value should be present in R0 */
asm( "MRS R0, CPSR" );
}
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 6 2006, 16:50
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(IV_K @ Dec 6 2006, 11:33) *
#pragma diag_suppress=Pe940
вот например чтение регистра CPSR, в сях его не прочитать..
как сказал vmp, читать иструкцию:
Код
#include <inarm.h>

TStatusReg StatusReg;

StatusReg = __get_CPSR();
do { __set_CPSR(StatusReg | (1<<7)); } while (!(__get_CPSR() & (1<<7)));        // disable IRQ


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:53
Рейтинг@Mail.ru


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