测试 AL 中的字节是否为零/非零通常哪个更快?
TEST EAX, EAX
TEST AL, AL
假设前面的"MOVZX EAX, BYTE PTR [ESP+4]"指令加载了一个带有零扩展的字节参数到 EAX 的其余部分,从而防止了我已经知道的组合值惩罚。
"MOVZX EAX, BYTE PTR [ESP+4]"
因此 AL=EAX 并且读取 EAX 不会受到部分寄存器的影响。
直观上,仅检查 AL 可能会让您认为它更快,但我敢打赌,对于 >32 位寄存器的字节访问,需要考虑更多的惩罚问题。
任何信息/细节表示赞赏,谢谢!
performance x86 assembly micro-optimization
assembly ×1
micro-optimization ×1
performance ×1
x86 ×1