- 通过 gcc -ffixed-<reg> 保留寄存器会可靠地增加溢出,但静态溢出计数是运行时成本的弱预测指标(皮尔逊 r=0.55)。
- 在最紧张的预算下,移除寄存器会使 9 个内核中的 8 个性能下降 14–76%;SipHash 尽管增加了 23 次溢出,但未出现性能下降。
- 性能下降与所使用的寄存器文件相关:例如,在 SHA-256 上保留通用寄存器导致成本增加 +33%,而保留 XMM 仅增加 +5.6%。
- GCC 使用 SSE 对 SHA-256 的一部分进行自动向量化,导致保留 XMM 使堆栈溢出增加 8 倍。