Программное прерывание позволяет тебе перейти в более привелегированный режим ( Супервизор ) и выполнить оттуда определенный участок кода обработчика. Вызавается командой SWI с определенным читсловым кодом . Происходит переход на обработчик - он анализирует числовой код , определяет какую функцию вызвать и передает ей параметры. Допустим ты можешь определить две ( и более ) функций : int Funk1( int value) __swi(1) {
}
и int Funk2 ( int value1 ) __swi(2) {
}
Обработчик анализирует код команды SWI ( в нашем случае - 1 и 2 ) , и по этому коду определяет , какая из функций вызвана и обеспечивает ей петредачу параметров. Так же ты из режима User переходишь в режим Супервизора и получаешь возможность напрямую работать с регистром CPSR - а это уже дает тебе побольше возможностей- например можешь разрешать/запрешать прерывания...
|