使用较小寄存器有什么好处,例如al vs eax/rax

nh2*_*nh2 6 compiler-construction assembly

我注意到GHC的代码生成器当前没有输出使用任何较低机器寄存器的程序集al.甚至字节大小的操作也是rax在64位和eax32位机器上实现的.然而,GCC经常使用这些较小的寄存器.

是否有使用小的寄存器的任何真正的性能优势al


到目前为止我听到的一个建议是操作码inc al小于inc rax(但不小于inc eax).是否存在使用小寄存器的其他非性能因素?

EOF*_*EOF 5

在x86-64上使用64位寄存器(rxx)需要操作码前缀.因此,指令更长,在内存和指令缓存中占用更多空间.我不知道它是否也会降低解码速度.如果在不适合L1指令高速缓存的循环中使用较大的代码,则代码大小可能会损害性能.