
Есть двухбайтовый массив во флеш:
Код
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]
LDRH r5,[r5,r1,LSL #1]
STR r5,[r3,#0x00]
Первая команда делает указатель на начало массива, в этом месте явно лишняя(это цикл)
Если включить оптимизацию, то компилятор ее убирает из него.
Вопрос: А нельзя ли это сделать на Си в рукопашную?
И еще, что делает сдвиг влево во второй команде? Адресует полуслово?