http://www.hitex.co.uk/arm/lpc2000book/lpc-ARM-book_srn.pdf http://www.cecs.csulb.edu/~brewer/347/lpc-ARM-book_srn.pdf У ARM как у баальших камней - есть юзермода, супервизормода и всё остальное. Во всём остальном есть механизмы перехода из одного режима в другой. Исключениями называют все (не помню - кажись все) моды, так или иначе не вписывающиеся ни в юзермоду, ни в супервизормоду. Вход в исключения сопровождается аппаратным сохранением набора регистров, не всегда одинакового. В привычных вариациях на тему программ используются такие исключения, как FIQ, IRQ и SWI - порядок приоритетов у них самый высокий у FIQ, потом согласно списку. SWI вааще-то отдельная кобыла - по хорошему нужна для программ, работающих в юзермоде, - позволяет реализовать механизм использования доступного в более крутых модах программе в юзермоде. Практически, как программные прерывания с номерами в DOS. К прерываниям по реальным событиям по хорошему не имеют никакого отношения, равно к VIC. Есть, правда, в VIC возможность взведения программно запроса прерывания - это совсем другое. VIC разгребается с приоритетами запросов прервания для взвода IRQ и подсовывания вектора перехода, а для FIQ берёт по ИЛИ всё, что разрешили и возникло (только изврат это - несколько запросов в один FIQ совать). Там вроде и для IRQ есть канал-"клоака" (17-й) в котором все непоместившиеся в 16 векторизованных собираются по ИЛИ, но как-то такой пилотаж даже не пытался осилить;)