作者回复: 在大多数情况下,请优先使用标准库中提供的方法,这里也就是 memcpy。达夫设备只是提出了使用循环展开进行优化的一种方式,而这种方式也仅适用于当时它出现的那个特殊场景中,也就是“将 16 位的无符号整数从一个数组中复制到 MMIO 寄存器”。而标准库中的方法在考虑常见性能优化策略的同时,还可能还会使用一些独立于架构的不同优化方式。除此之外,从兼容性、易用性、可读性上也更具优势。
作者回复: 如果合理使用的话(场景合适),理论上是可以的,Linux 内核里也有在用这些扩展函数。但实际使用时还是建议配合 profiler 检验一下优化效果。
作者回复: 这里针对五级 RISC 流水线来说,实际上 PC 的值一般是在 IF 阶段就可以计算(预测)好的,然后在 WB 之后才会实际更新到 PC 寄存器中。