问大家一个比较大小的问题
64位有符号数A, B
如果A-B后
是否结果最高位是1代表A < B?
否则A >= B
无符号的我已经否定了
两个数比较:
情况无符号数有符号数指令满足条件指令满足条件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 64位无法读取标志
只能根据结果判断 明白说吧
我想通过psubq
得到64+64位的进位 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=进位??? 原帖由 无心人 于 2008-3-31 15:09 发表 http://images.5d6d.net/dz60/common/back.gif
明白说吧
我想通过psubq
得到64+64位的进位
你也不明说是SIMD,我还当是普通的ALU呢!
正纳闷:64位会“无法读取标志”?!:@ 有符号数
0x8000000000000000LL (最小的64位整数,负数) - 1=0x7FFFFFFFFFFFFFFFLL (最大的64位整数)
所以这里A-B的结果最高位为0,但是A<B. 哈
一直在思考这个问题啊
我觉的可以这么做 还有什么别的特例么?
是不是仅这一个特例? 计算溢出就会有问题