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

 
 
> Keil + Ассемблер, Как сделать ассемблерную вставку в С-файле?
whiteTigr
сообщение Aug 4 2011, 08:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407



Собственно, топик.

Для организации задержек в некоторых процедурах записи хотелось бы использовать несколько Nop'ов или простенький цикл, в котором точно известно количество тактов.
Проблема в том, что компилятор при разных настройках оптимизации по разному делает циклы, написаные на С, и задержки получаются разными, и поэтому не хотелось бы полагаться на этот вариант.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
whiteTigr
сообщение Aug 5 2011, 07:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407



После еще одного дня раскопок нашлось сразу 2 варианта ассемблерных вставок.

Вариант1:
Код
__asm("MOV R0, #0x0A");

Вариант2:
Код
__asm{
    MOV R0, #0x0A
    label0:
    SUBS R0, R0, #0x1
    BNE label0
}


П.С.: у себя проблемы вроде бы решил, но захотелось закрыть этот топик, а не оставлять вопрос нерешенным.

Сообщение отредактировал whiteTigr - Aug 5 2011, 08:24
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 5 2011, 09:40
Сообщение #3


Гуру
******

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



QUOTE (whiteTigr @ Aug 5 2011, 09:11) *
После еще одного дня раскопок нашлось сразу 2 варианта ассемблерных вставок.

Ассемблерные вставки есть зло сбивающее оптимизацию компилятору. Использовать только если наплевать на результат. Единственное известное мне исключение это GCC компилятор, где приняты меры по органичному их встраиванию. Для остальных компиляторов, либо то, что предоставляется через intrinsics, либо нормальные ASM функции.


--------------------
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 Текстовая версия Сейчас: 31st July 2025 - 18:01
Рейтинг@Mail.ru


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