Dro*_*ohi 2 assembly arm instructions memory-barriers cortex-m
到目前为止,我使用了 3 个 NOP 来“清理”管道。最近我遇到了 ISB 指令,它可以帮我做到这一点。查看arm信息中心,我注意到这个命令需要4个周期(在Cortex M0下),而3个NOP只需要3个周期。
我为什么要使用这个命令?它与 3 NOP 有什么不同?
这是 NOP 的问题(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/CHDJJGFB.html):
手术
NOP 不执行任何操作,并且不保证耗时。处理器可能会在到达执行阶段之前将其从管道中删除。
使用 NOP 进行填充,例如将后续指令放置在 64 位边界上。
其他 ARM Cortex 设备的文档中也有相同的信息,因此将该指令用于填充以外的任何目的根本不可靠。您拥有的唯一保证是该指令将占用 2 ( nop) 或 4 个字节 ( nop.w) 并且它不会执行任何操作 - 仅此而已。
| 归档时间: |
|
| 查看次数: |
2734 次 |
| 最近记录: |