xorl和movl哪个更快

倒不在于快不快,主要是这样占字节数少,有时候偏偏就差这一两个字节,你就不能用LOOP指令了,或者512B的引导扇区装不下了。注:x86中LOOP/LOOPD指令只能跳转-128-127B
■网友
编译器把a=0编译成xorl %eax,%eax而非movl $0,%eax是因为前者只占2个字节而后者占5个字节(见下图)。相对而言,xorl更节省空间。xorl和movl哪个更快
【xorl和movl哪个更快】
补充一下:这并不是绝对的,编译器有时也会把a=0编译成movl $0,%eax。
■网友
用汇编写一段这个指令连跑1亿次的程序,前后rdtsc一下,就知道了我记得xor eax,eax 是比mov eax,0 快的,因为立即数的访问也需要时间,同时xor的话指令长度更短
■网友
0是立即数 ,mov的速度比xor 慢,xor也省内存
■网友
如果是普通的xor指令,即两个寄存器不同,那这个指令就会有dependency,如果前面有任何写入两个寄存器的指令就会变慢,而mov 立即数没有dependency问题。不过现在的处理器可以识别xor eax, eax这样的置0指令(还有sub eax, eax),不会产生dependency,所以速度和mov一样。唯一的问题是xor会修改flags,但mov不会


    推荐阅读