ФЭНДОМ


SWI (ARM)

Формат инструкции SWI

Инструкция SVC вызывает исключение вызова супервизора. До появления унифицированного языка ассемблера она имела мнемонику SWI.

Синтаксис

SVC{cond}  immed_24

cond определяет, при каком условии инструкция будет выполнена. Если это поле опущено, выполнение производится безусловно.

immed_24 является непосредственным значением, указанным в инструкции. Оно игнорируется процессором, но может быть использовано операционной системой.

Версии архитектуры

Все.

Исключения

Программное прерывание по вызову супервизора.

Операция

if условие выполнено then
  R14_svc = адрес инструкции, следующей за SVC
  SPSR_svc = CPSR
  CPSR[4:0] = 0b10011 /* Переход в режим супервизора */
  CPSR[5] = 0         /* Работа в состоянии ARM */
  /* CPSR[6] не изменяется */
  CPSR[7] = 1         /* Запрет обычных прерываний */
  /* CPSR[8] не изменяется */
  CPSR[9] = CP15_reg1_EEbit
  if задано использование старших векторов then
    PC = 0xFFFF0008
  else
    PC = 0x00000008

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

Команда SVC используется для вызова сервисов операционной системы из прикладных программ. Конкретный способ организации связи между программой и ОС определяется разработчиком ОС.

Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.