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

 
 
> Вставки ассемблера в код 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
Ответов
vmp
сообщение Dec 6 2006, 11:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(Petka @ Dec 6 2006, 10:34) *
Иногда приходится Си сопрягать с ассемблером (например для получения ID кода камня, для манипуляций к кэшом и подобные). Как это грамотно осуществить в IAR?


1. Поставить IAR.
2. Запустить его.
3. Во второй строчке окна будет пункт Help. Нажать на него мышкой.
4. В выпавшем меню выбрать пункт "ARM C/C++ Compiler reference guide".
5. В открывшемся в Adobe Acrobat документе перейти в "Part 1. Using the compiler", далее выбрать главу "Assembler language interface".
6. Читать до полного просветления.

P.S. smile.gif
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 6 2006, 13:01
Сообщение #3


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

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



Цитата(vmp @ Dec 6 2006, 11:02) *
4. В выпавшем меню выбрать пункт "ARM C/C++ Compiler reference guide".
P.S. smile.gif

Благодарю. Почему-то искал в "ARM Assembler ref. guide".

Цитата(zltigo @ Dec 6 2006, 11:41) *
Цитата(Petka @ Dec 6 2006, 09:34) *

Иногда приходится Си сопрягать с ассемблером (например для получения ID кода камня, для манипуляций к кэшом и подобные).

Как узнать - написано выше. От себя добавлю, что для вышеперечисленного заниматься вставками cовершенно незачем.

Добавьте от себя лучше как выполнить в IAR инструкции "mcr", "mrs".

Цитата
Код
#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



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

 


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


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