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

 
 
> Уменьшить число тактов.
muravei
сообщение Aug 19 2013, 08:25
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Я пытался спрашивать в "начинающих", но никто мне не ответил. crying.gif
Есть двухбайтовый массив во флеш:
Код
static const uint16_t tab[4096]={0,1,2...типа того

надо выбирать из него значения
Код
*pDAC    =tab[i];

без оптимизации:
Код
     LDR      r5,[pc,#24] ; @0x080003EC  Тут адрес массива во флеш
     LDRH     r5,[r5,r1,LSL #1]
     STR      r5,[r3,#0x00]

Первая команда делает указатель на начало массива, в этом месте явно лишняя(это цикл)
Если включить оптимизацию, то компилятор ее убирает из него.
Вопрос: А нельзя ли это сделать на Си в рукопашную?

И еще, что делает сдвиг влево во второй команде? Адресует полуслово?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Aug 19 2013, 08:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(muravei @ Aug 19 2013, 12:25) *
Если включить оптимизацию, то компилятор ее убирает из него.
Вопрос: А нельзя ли это сделать на Си в рукопашную?

Некоторые увлекаются рихтовкой сишного кода с целью получения выхлопа компилятора, похожего на то, что хочется. ИМХО, это глубоко ущербный подход.
Во-первых, с вероятностью 90% это преждевременная оптимизация, то есть некая бурная деятельность, которая не приносит никакой пользы вообще, и приносит вред в виде ухудшения читаемости кода. Если бы думаете, что сэкономленный байт и такт приносят пользу, то в 90% случаев вы неправы.
Во-вторых, если вам нужен машинный код конкретного вида, то используйте ассемблер - он для этого и существует.

Цитата(muravei @ Aug 19 2013, 12:25) *
И еще, что делает сдвиг влево во второй команде? Адресует полуслово?

Да.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 22:39
Рейтинг@Mail.ru


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