gpt4 book ai didi

arm - 对于 ARM Aarch64 的 NEON 编码,如何将寄存器压入堆栈?似乎 STMFD 不是 Aarch64 指令集的一部分?

转载 作者:行者123 更新时间:2023-12-05 06:45:44 26 4
gpt4 key购买 nike

对于ARM Arch64的NEON编码,你如何将寄存器压入堆栈??好像STMFD不是Arch64指令集的一部分?你只是将寄存器对一个一个地保存到堆栈上吗? ?

最佳答案

AArch64 设计者故意删除了 STM/LDM 指令,大概是为了简化指令调度和故障处理。

3.5 Memory Load-Store
3.5.1 Bulk Transfers

The LDM, STM, PUSH and POP instructions do not exist in A64, however bulk transfers can be constructed using the LDP and STP instructions which load and store a pair of independent registers from consecutive memory locations, and which support unaligned addresses when accessing normal memory. The LDNP and STNP instructions additionally provide a “streaming” or ”non-temporal” hint that the data does not need to be retained in caches. The PRFM (prefetch memory) instructions also include hints for “streaming” or “non-temporal” accesses, and allow targeting of a prefetch to a specific cache level.

(来自 ARMv8 ISA Overview)

所以是的,您应该改用多个 STP/LDP 指令。

关于arm - 对于 ARM Aarch64 的 NEON 编码,如何将寄存器压入堆栈?似乎 STMFD 不是 Aarch64 指令集的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com