Я пытаюсь написать программу для arduino, которая переменным образом вычисляет абсолютный адрес, а затем переходит к нему (это часть более крупной программы с более широкой целью), однако у меня возникли некоторые проблемы. В настоящее время я делаю что-то вроде следующего:
uint16_t v_pc;
uint16_t jmpAddress;
jmpAddress = 0x00cf;
v_pc = 0x01;
jmpAddress = calc_address(jmpAddress, v_pc);
asm("jmp %0" :: "r" (jmpAddress));
где calc_address:
uint16_t calc_address(uint16_t jmpAddress, uint16_t v_pc){
return jmpAddress += v_pc;
}
Однако, когда я пытаюсь связать программу (например, avr-gcc -mmcu=atmega328p program.o -o program), она выдает следующую ошибку:
undefined reference to `r24' collect2: error: ld returned 1 exit status
Может быть, есть лучший способ реализовать это или кто-нибудь может описать, почему эта ошибка может возникнуть?
Спасибо!