Мне надо было сделать JMP к адресу 0200. Код такой:
Код
/*---------------------------------------------------------------------------*/
__C_task void main(void) /* the main code is here */
/*---------------------------------------------------------------------------*/
{
Initialize();
if (testCode == 0) /* bad code */
{
((void (*)())0x200)(); /* jump to the fixed address (!!!! USES ICALL!!!!)*/
}
if (busReceiveByte() == seq1)
{
if (busReceiveByte() == seq2)
{
loader();
}
}
((void (*)())0x200)(); /*(!!!! USES IJMP!!!!) */
}
Но на дизассемблере находил что первый JMP \"сделан\" из ICALL а второй из IJMP, что то вроде:
Код
LDI R30, 0x00
LDI R31, 0x02
ICALL
LDI R30, 0x00
LDI R31, 0x02
IJMP
Мне хотелось как нибудь чтобы компилятор поставил RJMP и не мучил меня с IJMP. Конечно я совсем не согласен когда он огорчил меня с ICALL. Слово
goto точно подходить для меня но как установить этикет по адресу 0x200?