【发布时间】:2020-11-19 07:29:27
【问题描述】:
由于某些原因,我需要将stp指令替换为str:
旧:
stp q0, q0, [dst, -32]
新:
str q0, [dst, -32]
str q0, [dst, -24]
或
str q0, [dst, -24]
str q0, [dst, -32]
我已经尝试了这两个命令,但两者都会在某处以段错误结束。哪里出了问题?
【问题讨论】:
-
只是出于好奇,您需要将
stp替换为两个strs 的原因是什么? -
@NateEldredge 某些平台有 cpu 错误,stp 在某些 radeon/mesa 情况下似乎会使 cpu 崩溃
-
stp q,q在某些 CPU 上是否需要 32 字节对齐?还是它不容易重复,更像是微架构条件的组合。 (英特尔有过类似的勘误表,比如启用超线程的部分寄存器合并,导致通过微码更新禁用 Skylake 上的循环缓冲区以解决它。但是在 ocaml 编译器开发人员注意到它之前花了一年或更长时间,显然他们的编译器生成的代码有时会触发错误的行为。) -
@PeterCordes 我现在无法获得 cpu 供应商的支持,所以不确定它是否需要 32 字节对齐 ;(。是的,它不容易重复。
标签: assembly segmentation-fault arm64