如果在执行stmfd指令时有IRQ会发生什么?

时间:2017-02-14 21:01:01

标签: arm

stmfd指令是否被视为单个指令,这是否意味着它将在处理IRQ之前完全执行? 或者它被视为多个指令,这是否意味着我们将要处理IRQ并在之后完成stmfd指令?

1 个答案:

答案 0 :(得分:2)

确切的答案取决于你拥有的确切核心。例如,在ARM Cortex-M4上,此操作不是原子的,并且是可中断的。见这里 - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/ch03s09s01.html

  

处理器实现可中断的可持续指令   领域。加载多个(LDM)操作并存储多个(STM)   操作是可以中断的。 EPSR的ICI领域持有   从中继续加载或存储多个所需的信息   中断发生的地方。这意味着软件一定不能   使用加载多个或存储多个指令来访问设备或   对重复写入敏感或敏感的内存区域。   在任何情况下,软件都不得使用这些说明   重复读取或写入可能导致不一致的结果或不需要的   副作用。

您应该在ARM核心的文档中查找相同的章节。