对于 ARM Arch64 的 NEON 编码,如何将寄存器推入堆栈?似乎 STMFD 不是 Arch64 指令集的一部分?你只是将寄存器对一一保存到堆栈中吗?
问问题
1927 次
1 回答
1
AArch64 的设计者特意去掉了STM
/LDM
指令,大概是为了简化指令调度和故障处理。
3.5 内存加载-存储
3.5.1 批量传输A64 中不存在 LDM、STM、PUSH 和 POP 指令,但是可以使用 LDP 和 STP 指令构建批量传输,这些指令从连续的内存位置加载和存储一对独立的寄存器,并且在访问普通内存时支持未对齐的地址. LDNP 和 STNP 指令还提供“流”或“非临时”提示,表明数据不需要保留在缓存中。PRFM(预取存储器)指令还包括“流式”或“非临时”访问的提示,并允许将预取定位到特定的缓存级别。
(来自ARMv8 ISA 概述)
所以是的,你应该使用多个STP
/LDP
指令。
于 2014-02-25T15:05:37.627 回答