Является ли инструкция stmfd видимой как одна инструкция, и значит ли это, что она будет полностью выполнена до обращения к IRQ? Или это рассматривается как несколько инструкций, и значит ли это, что мы будем иметь дело с IRQ и закончить инструкцию stmfd?Что происходит, если есть IRQ при выполнении инструкции stmfd?
ответ
Точный ответ зависит от точного ядра, которое у вас есть. Например, на ARM Cortex-M4 это исключение не является атомарным и прерывается. Смотрите здесь - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/ch03s09s01.html
Процессор реализует прерываемое-продолжимую Инструкцию поля. Операции загрузки нескольких (LDM) операций и хранения нескольких (STM) прерываются. Поле ICI EPSR содержит информацию , необходимую для продолжения загрузки или хранения нескольких из точки , где произошло прерывание. Это означает, что программное обеспечение не должно использовать множественные нагрузки или хранить несколько инструкций для доступа к устройству или область памяти , которая чувствительна к чтению или чувствительна к повторной записи. Программное обеспечение не должно использовать эти инструкции в любом случае, когда повторные чтения или записи могут приводить к непоследовательным результатам или нежелательным побочным эффектам .
Вы должны найти ту же главу в документации на ядро ARM, которое у вас есть.
Возможный дубликат [ARM: «STMDB SP !, {R0-R8}» (иначе PUSH {R0-R8}) атомная операция?] (Http://stackoverflow.com/questions/23628136/arm- is-stmdb-sp-r0-r8-aka-push-r0-r8-an-atomic-operation) –
зависит от ядра, приходится смотреть на каждый отдельно и/или на конкретный, который у вас есть. –
вам вообще не должно волновать, какая инструкция была прервана. единственное, что вам нужно, - это если это связано с (плохо спроектированным) периферийным устройством, которое действует на записи, таким образом, что если некоторые из записей произошли, а затем остановились, а затем некоторые из них произошли снова (по их же адресам) или продолжается там, где он оставил перфорированные действия по-другому, чем если бы они все происходили по порядку в течение некоторого времени (stm ни в коем случае не гарантирует, что отдаленная сторона получает вещи в любые детерминированные временные рамки, даже если не прерывается). –