ARm prfm 和 prfum 指令

问题描述

谁能解释一下手臂指令 prfm 和 prfum 之间的区别以及它们的用法

PRFUM https://developer.arm.com/documentation/dui0802/b/PRFUM

PRFM https://developer.arm.com/documentation/dui0801/g/A64-Data-Transfer-Instructions/PRFM--literal-

解决方法

对于此类问题,您的主要来源是 ARMv8 架构参考手册。我手头有 E.a 版,所以页码指的是那个版本。

在第 C6-1136 页上,描述了 PRFM(立即)。它允许预取数据的偏移量是 8 的倍数,范围为 0 到 +32760,相对于基址寄存器中的值。

在第 C6-1142 页上,描述了 PRFUM。它允许预取相对于基址寄存器中的值在 -256 到 +255 范围内的任何偏移量(不仅仅是 8 的倍数)的数据。

因此,如果您需要(出于某些原因,例如处理字符串)以字节精度进行预取,或者需要使用负偏移量进行预取,则必须使用 PRFUM。另一方面,如果您想以 256 或更高的偏移量进行预取,则必须使用 PRFM