stmfd指令是否被视为单个指令,这是否意味着它将在处理IRQ之前完全执行? 或者它被视为多个指令,这是否意味着我们将要处理IRQ并在之后完成stmfd指令?
答案 0 :(得分:2)
确切的答案取决于你拥有的确切核心。例如,在ARM Cortex-M4上,此操作不是原子的,并且是可中断的。见这里 - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/ch03s09s01.html
处理器实现可中断的可持续指令 领域。加载多个(LDM)操作并存储多个(STM) 操作是可以中断的。 EPSR的ICI领域持有 从中继续加载或存储多个所需的信息 中断发生的地方。这意味着软件一定不能 使用加载多个或存储多个指令来访问设备或 对重复写入敏感或敏感的内存区域。 在任何情况下,软件都不得使用这些说明 重复读取或写入可能导致不一致的结果或不需要的 副作用。
您应该在ARM核心的文档中查找相同的章节。