Скачиваний:
66
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Команда программного прерывания (Software Interrupt)

Синтаксис в ассемблере

SWI{<cond>} <immed_24>

Формат команды представлен на рис. 1.

Описание

<cond> – поле условия (см. таблицу 1).

<immed_24> – зарезервированное поле.

Команда SWI содержит в четырех старших битах флаги условного выполнения, за которыми располагается код операции. Остаьная часть слова команды остается свободной. В неиспользуемых битах 0..23 можно передавать значения, определяемые пользователем. Для передачи значения, существуют два метода:

– Идентификатор подпрограммы обработки прерывания содержится в поле <immed_24>, а произвольные параметры могут быть записаны в регистры общего назначения.

– Значение <immed_24> игнорируется. Регистр общего назначения R0 используется для выбора подпрограммы обработки прерывания, а прочие РОН могут быть использованы для передачи параметров.

Действие

Команда SWIгенерирует исключительную ситуацию, в результате чего процессор переключается в защищенный режим (Supervisor) и переходит по адресу вектора SWI.

Использование

Команда SWIиспользуется для входа в защищенный режим для выполнения привилегированных участков программы или системных вызовов.

Примеры

SWI #3

В неиспользуемых битах команды будет записано число 3.

SWI ReadC

В неиспользуемых битах будет записан следующий прочитанный символ из входного потока.

SWI WriteI+"k"

Вывод “k” в выходной поток.

SWINE 0

Вход в режим супервизора с передачей 0 в качестве параметра.

SWITHUMB

Команда программного прерывания (Software Interrupt)

Синтаксис в ассемблере

SWI<immed_8>

Формат команды представлен на рис. 2.

Описание

<immed_8> – зарезервированное поле.

Команда SWIвызывает передачу управления на обработчик программного прерывания, при этом ядро процессора переключается в режим ARM и входит в режим супервизора (SVC).

Действие

Выполнение программного прерывания: запись в регистр LR адреса следующей команды, копирование в SPSR содержимого CPSR, загрузка адреса вектора SWI (0x00000008) в регистр PC. Переключение ядра в режим ARM и вхождение в режим SVC.

Использование

Команда SWI используется для генерации программного прерывания.

Примеры

SWI 18

Вызывается обработчик программного прерывания. Происходит переключение в режим супервизора, при этом число 18 передается в качестве номера программного прерывания SWI.

SWPARM

Команда обмена (Swap)

Синтаксис в ассемблере

SWP{<cond>} <Rd>, <Rm>, [<Rn>]

Формат команды представлен на рис. 1.

Описание

<cond> – поле условия (см. таблицу 1).

<Rd> – регистр результата (см. таблицу 1).

<Rm> – регистр первого операнда (см. таблицу 1).

<Rn> – регистр второго операнда (см. таблицу 1).

Атомарная команда SWP осуществляет одновременный обмен содержимого двух регистров или содержимого регистра и памяти. Благодаря такому решению предотвращается прерывание обмена критическими данными при возникновении исключительной ситуации.

Использование

Благодаря команде SWP обеспечивается поддержка семафоров реального времени.

Примеры

SWP R0,R1,[R2]

В регистр R0 загружается слово по адресу в R2, а значение регистра R1сохраняется в регистре R2.

SWPBARM