QUOTE (gighack @ Aug 5 2010, 12:26)

Это ключевой момент в реализации модели состояний программы (см. аттач)
Посмотрел совсем мельком. Смысла написанного особого не понял. За обильную смесь из 'C' и asm( "...." ) на IAR надо вообще руки отрывать, ибо оптимизацию сносит по полной программе. Относительно нормально такое только GCC переваривает. Для большинства компиляторов asm( ) это жуткая заплатка только для крайних случаев.
Вообще похоже Вы пытаетесь изобрести
велосипед setjmp()/longjmp() а то и просто switch()

.
Если вдруг где-то чего-то действительно жмет, то несколько десятков строчек на ASM, тем более в ядре системы дело правильное. А пытаться замучать конкретный компилятор, дабы он сгенерил нечто конкретное, что Вам хочется увидеть дело не правильное.