|
контроллер AVR
Имеется глобальная переменная например char p[];
мне нужно выполнить следующую операцию:
low(&p[33]) -> r28;
high(&p[33])-> r29;
поскольку переменная глобальная то адреса всех членов массива извесны на момент компиляции, соотвественно это можно сделать 2-мя командами.
я пытаюсь сделать следующее:
*((char**)28) = &p[33];
все получается, но занимает 6 команд(ну не хочет компилятор понимать что по адресам 28,29 можно загружать константы непосредственно), хотелось бы сделать примерно следующее:
asm("ldi r28, (&p[33]&0xFF)");
asm("ldi r29, (&p[33]&>>8)");
но компилятор ругается.
E-mail: info@telesys.ru