我正在考虑在纯汇编中实现 SHA3。SHA3 具有 17 个 64 位无符号整数的内部状态,但由于它使用的转换,如果我在寄存器中有 44 个这样的整数可用,则可以实现最佳情况。可能加上一个临时寄存器。在这种情况下,我将能够在寄存器中进行整个转换。
但这是不现实的,甚至可以一直优化到几个寄存器。尽管如此,更多可能更好,这取决于这个问题的答案。
我正在考虑至少使用 MMX 寄存器进行快速存储,即使我需要换成其他寄存器进行计算。但我担心那是古代建筑。
MMX 寄存器和 RAX 之间的数据传输是否会比在堆栈上索引 u64 并从可能是 L1 缓存的地方访问它们更快?或者即使是这样,除了我应该注意的速度考虑之外,是否还有隐藏的陷阱?我对一般情况感兴趣,所以即使在我的计算机上一个比另一个快,它可能仍然没有定论。