无心人 发表于 2009-3-19 17:12:27

128位数字的无跳转比较问题

有两个无符号128位整数

typedef struct
{
unsigned int d;
} UINT128;

现在求函数
int compare(UINT128 * a, UINT128 * b )
的汇编化,无任何跳转指令的版本
a > b返回1
a = b返回1
a < b返回-1
(没有答案,请大家讨论)

可以利用到SSE2指令

gxqcn 发表于 2009-3-20 07:34:35

你应该首先约定是小端在前(Intel模式),还是大端在前(Moto模式)?
这样才好比较大小(推荐用前者)。

但感觉本身需要判断完成的、很难并行处理的程序,
估计用 SIMD 指令也够戗。

无心人 发表于 2009-3-20 07:53:53

:)

小端形式

用无分支指令的减法能判断>=

现在是如何区分>和=

wayne 发表于 2009-3-20 09:15:45

原帖由 无心人 于 2009-3-19 17:12 发表 http://bbs.emath.ac.cn/images/common/back.gif
...
(没有答案,请大家讨论)
可以利用到SSE2指令
我记得我曾经安装MATLAB R2008b折腾了好几天,精力憔悴的时候,才获悉,这个版本开始使用SSE2 指令集,而我的机子是PIII的,。。。

从此,我就记下了SEE2这个字符串

无心人 发表于 2009-3-20 10:23:43

呃,PIII

楼上该换机器了
页: [1]
查看完整版本: 128位数字的无跳转比较问题