无心人 发表于 2008-3-31 14:47:15

问大家一个比较大小的问题

64位有符号数
A, B
如果A-B后
是否结果最高位是1代表A < B?
否则A >= B

无符号的我已经否定了

gxqcn 发表于 2008-3-31 14:56:52

两个数比较:

情况无符号数有符号数指令满足条件指令满足条件A < BJCCF==1JLSF^OF==1 && ZF==0A ≥ BJNCCF==0JNLSF^OF==0||ZF==1A ≤ BJNACF==1 || ZF==1JLGSF^OF==1||ZF==1A > BJACF==0 && ZF==0JGSF^OF==0 && ZF==0

无心人 发表于 2008-3-31 15:08:03

64位
无法读取标志
只能根据结果判断

无心人 发表于 2008-3-31 15:09:22

明白说吧
我想通过psubq
得到64+64位的进位

无心人 发表于 2008-3-31 15:21:05

movd eax, 0x80000000
movd mm7, eax
psllq mm7, 32
paddq mm1, mm2
pxor mm1, mm7
pxor mm2, mm7
psubq mm2, mm1
pxor mm1, mm7
pandn mm2, mm7
psrlq mm2, 63
mm2=进位???

gxqcn 发表于 2008-3-31 15:27:14

原帖由 无心人 于 2008-3-31 15:09 发表 http://images.5d6d.net/dz60/common/back.gif
明白说吧
我想通过psubq
得到64+64位的进位

你也不明说是SIMD,我还当是普通的ALU呢!
正纳闷:64位会“无法读取标志”?!:@

mathe 发表于 2008-3-31 15:31:35

有符号数
0x8000000000000000LL (最小的64位整数,负数) - 1=0x7FFFFFFFFFFFFFFFLL (最大的64位整数)
所以这里A-B的结果最高位为0,但是A<B.

无心人 发表于 2008-3-31 15:32:03


一直在思考这个问题啊
我觉的可以这么做

无心人 发表于 2008-3-31 15:33:46

还有什么别的特例么?
是不是仅这一个特例?

mathe 发表于 2008-3-31 15:34:59

计算溢出就会有问题
页: [1] 2 3
查看完整版本: 问大家一个比较大小的问题