Цитата(Kernigan @ Oct 17 2008, 16:04)

Цитата
Нельзя разрешать прерывания перед выходом из прерывания, они сами разрештся при выполнении инструкции RETI
Можно конечно. Не запрещено.
1. Лишняя инструкция SEI, прерывания все равно будут разрешенны при выполнении инструкции RETI.
2. При разрешении прерывани до возвращения из обработчика создаються условия что следующиу обработчик(и) вызовутся когда в стеке еще находиться адрес возврата и возможно локальные переменные текущего обработчика, что приводит к повышенному и неэффективному использованию опреративной памяти.
3. Специфично для GCC. Если функции нужно место в стеке, то нужно модифицировать регистр указателя стека. Пролог и эпилог обработчика прерывиня генерируеться из предположения что прерывания отключены и в них не выполняеться временное отключение прерываний при модификации указателя стека. Разрешая прерывания до эпилога возникают условия что обработчик прерывания может быть вызван когда указатель стека модифицирован только частично (старший байт уже изменен младший еще нет), что может привести к критическим последствиям.
Анатолй.