yylogo 发表于 2010-08-02 09:54

对寄存器置零下面哪个更快?

xor ax, ax
sub ax, ax
mov ax, 0

L_kernel 发表于 2010-08-02 11:59

最后一个立即寻址的方式最快。

zhaohongjian000 发表于 2010-08-02 22:06

xor是单周期的指令似乎,据说有xor很快,但我怀疑有没有必要...

jzhang918 发表于 2010-08-02 22:20

回复 1# yylogo


    不熟悉x86的指令。但是gcc是用 xor 来清零的。

beepbug 发表于 2010-08-03 20:32

最后一个立即寻址的方式最快。
L_kernel 发表于 2010-08-02 11:59 http://linux.chinaunix.net/bbs/images/common/back.gif

我猜这个最慢。

L_kernel 发表于 2010-08-03 21:17

我猜这个最慢。
beepbug 发表于 2010-08-03 20:32 http://linux.chinaunix.net/bbs/images/common/back.gif


    可否讲一下原因?哪怕是猜的。

L_kernel 发表于 2010-08-03 21:22

操作数在寄存器中快。
立即数较快。
存储器或者I/O端口较慢。

bluesea666 发表于 2010-08-03 23:27

最快的应该是:
xor ax, ax

beepbug 发表于 2010-08-04 20:23

可否讲一下原因?哪怕是猜的。
L_kernel 发表于 2010-08-03 21:17 http://linux.chinaunix.net/bbs/images/common/back.gif


我猜:
第三条指令需要内嵌0这个立即数,指令比较长。

accessory 发表于 2010-08-05 02:04

re 8 lou
页: [1] 2
查看完整版本: 对寄存器置零下面哪个更快?