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

 
 
> Embedded assembler syntax in C, Как создать внутри кода на Си участок из ассемблерного кода
MySOL
сообщение Mar 12 2018, 07:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Доброго времени суток!
Прошу подсказать или показать пример, как создать в коде на Си участок из ассемблерного кода (пишу критическую секцию и важно быть уверенным во времени исполнения участка). Нужно ли подключать какие-либо библиотеки и проводить дополнительные настройки?
Пример на сайте ARM видел. Я пытался скопировать его. Компилятор понимает директивы, но команды ассемблера не понимает.
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Mar 12 2018, 13:31
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Не обращайте внимания. Это не компилятор, и не на void.
Go to the top of the page
 
+Quote Post
MySOL
сообщение Mar 12 2018, 13:39
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Цитата(ViKo @ Mar 12 2018, 16:31) *
Не обращайте внимания. Это не компилятор, и не на void.

Понял, спасибо! В ближайшее время опробую и отпишусь!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 12 2018, 14:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Если нужно именно в си-код добавить участок асм-кода (а не целиком функцию на асм), то лучше использовать intrinsic-функции. Если они есть в Keil. В IAR для этого их и использую.
Если функция целиком на асм, то лучше написать её в отдельном асм-файле.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 12 2018, 14:41
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(jcxz @ Mar 12 2018, 17:24) *
Если нужно именно в си-код добавить участок асм-кода (а не целиком функцию на асм), то лучше использовать intrinsic-функции. Если они есть в Keil.

В Кейл есть, естественно. Но это же только замена некоторых уникальных asm-команд. Как они могут заменить "участок асм-кода"? laughing.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 12 2018, 18:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Mar 12 2018, 16:41) *
В Кейл есть, естественно. Но это же только замена некоторых уникальных asm-команд. Как они могут заменить "участок асм-кода"? laughing.gif

Никак. Но и смешивать си-код и асм, не зная какие регистры и как использует первый - чревато.
Вот Вы написали "BX LR", а ведь в LR в конце функции не обязательно будет адрес возврата, если пролог функции "написал" си-компилятор.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 13 2018, 04:13
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(jcxz @ Mar 12 2018, 21:12) *
Никак. Но и смешивать си-код и асм, не зная какие регистры и как использует первый - чревато.
Вот Вы написали "BX LR", а ведь в LR в конце функции не обязательно будет адрес возврата, если пролог функции "написал" си-компилятор.

Какой пролог? Вся функция показана. Название в том числе.
Умный компилятор Кейла (полагаю, как и другие) считает R0, R1 и т.п. не названиями регистров, а именами переменных.

Да, Кейл, естественно, выполняет соглашение о порядке передачи аргументов в функцию.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MySOL   Embedded assembler syntax in C   Mar 12 2018, 07:35
- - Baser   По ссылке на сайте АРМ, там руководство по использ...   Mar 12 2018, 11:04
- - jcxz   Цитата(MySOL @ Mar 12 2018, 09:35) Прошу ...   Mar 12 2018, 11:05
- - ViKo   "ARM ® Compiler v5.06 for µVision armcc User...   Mar 12 2018, 11:22
- - MySOL   Господа, спасибо за ответы! Почитал кейловски...   Mar 12 2018, 13:18
|- - KRS   Цитата(jcxz @ Mar 12 2018, 21:12) Но и см...   Mar 12 2018, 18:54
|- - jcxz   Цитата(ViKo @ Mar 13 2018, 06:13) Какой п...   Mar 13 2018, 12:59
- - ViKo   Поначалу функцию имел следующую: Код__asm void Har...   Mar 13 2018, 13:25
- - jcxz   Цитата(ViKo @ Mar 13 2018, 15:25) Поначал...   Mar 13 2018, 13:43
- - ViKo   Цитата(jcxz @ Mar 13 2018, 16:43) Ну - у ...   Mar 13 2018, 14:04
- - jcxz   Цитата(ViKo @ Mar 13 2018, 16:04) Есть пр...   Mar 13 2018, 14:20


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:28
Рейтинг@Mail.ru


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