самый эффективный способ:
main.c
Код
#include <stdint.h>
uint8_t const __flash Array[8] = {1,2,3,4,5,6,7,8};
extern void AsmFunc(void);
void main (void) {
AsmFunc();
}
Asm_fish.c:
Код
#include <stdint.h>
extern uint8_t const __flash Array[8];
uint8_t Tmp;
void AsmFunc(void) {
uint8_t i;
for(i = 0; i < 3; i++) {
Tmp = Array[i*2];
}
}
Ставишь галочку "генерить ассемблерный файл" в опцияк компилятора на вкладке листинг, компилишь, внимательно изучаешь полученную "рыбу". Или пишешь нужную функцию полностью на С, компилишь, получаешь ассемблерный исходник и его оптимизируешь. Только не забудь прочитать в документации какие регистры функция может портить, а какие должна сохранять.