2014-01-03 2 views
2

Я ищу пример кода, который вызывает исключение неопределенной инструкции и предоставляет обработчик для исключения. Последняя строка кода имеет непривычный синтаксис, и я не смог найти свой смысл:Обработка исключений в сборе в сборе

LDMFD sp!, {r0-r12, pc}^ 

Что представляют символ ^?

ответ

1

От ARM armasm LDM documentation:

^

является дополнительным суффиксом, доступен только в ARM состоянии. Вы не должны использовать в режиме пользователя или в системном режиме. Он имеет следующие цели:

  • Если регстит содержит ПК (R15), в дополнение к обычной передаче нескольких регистров, SPSR копируется в CPSR. Это для возврата из обработчиков исключений. Используйте это только из режимов исключения.
  • В противном случае данные передаются в регистры пользовательского режима или из них вместо текущих регистров режима.
0

Это копирует SPSR текущего режима в CPSR, предоставляя инструкцию атомарного возврата и восстановления. Есть хорошее описание в Furber текст pg. 131.

Смежные вопросы