|
|
  |
Вставки ассемблера в код C, как это грамотно делать в IAR |
|
|
|
Dec 6 2006, 11:02
|

Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Dec 6 2006, 13:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(vmp @ Dec 6 2006, 11:02)  4. В выпавшем меню выбрать пункт "ARM C/C++ Compiler reference guide". P.S.  Благодарю. Почему-то искал в "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" ); } по поводу функции это понятно, хотя не очень красиво, а по поводу прагмы, что это значит? как её использовать?
|
|
|
|
|
Dec 6 2006, 16:50
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Dec 7 2006, 10:37
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(vmp @ Dec 6 2006, 11:02)  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.  Вот за это - большое человеческое спасибо  А я-то всю дорогу пытался в Content тыкать  Вот ведь - шоры
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|