Цитата(jorikdima @ Jul 9 2007, 08:43)

объявить указатель на функцию с адресом 0
вызвать ее
Насколько я знаю, это будет работать не во всех компиляторах.
(не для всех процессоров/моделей памяти/опций линкера по распределению памяти)
Цитата(ivainc1789 @ Jul 9 2007, 09:08)

Ассемблерная вставка?
Например
Цитата
Или у компилятора есть спец. средства для этого? Я нашел только: __indirect_jump_to 0x00
Indirect jump - это через регистр Z, вполне подойдет если он есть в IAR.
Вот пример, правда для WinAVR:
Код
//-------------------------------------------------------------------
// Перезагрузка (рестарт с адреса 0)
//-------------------------------------------------------------------
void Reset()
{
__asm__ __volatile__ ("cli"); // запретить прерывания
// останавливаем всю переферию
SysTimerStop();
AdcStop();
SpiStop();
PwmStop();
PortsReset();
I2cStop();
// переходим на адрес 0
__asm__ __volatile__("ldi r30,0\n\t"\
"ldi r31,0\n\t"\
"ijmp");
}
в каждом xxxStop(); выключается соответствующий модуль и сбрасываются флаги прерываний