liangbch 发表于 2009-3-23 16:59:22

我的那个 logSum函数中的汇编代码正好100行(不包括空行,标号)。本来可以写的更短些,但那样速度就会下降,所以还是保留现在的样子。

无心人 发表于 2009-3-23 17:33:39

俺的目前是73行
在优化SSE代码兼调试中
通篇代码仅一个两重循环,最内循环一个跳转

无心人 发表于 2009-3-23 17:36:21

**** Hidden Message *****

好像是可以工作了,但提交后,提示崩溃
有点怀疑其机器不支持某些指令

无心人 发表于 2009-3-23 20:25:52

#include <stdlib.h>
#include <stdio.h>

int add(int a, int b)
{
   __asm
   {
      movd xmm0, a
      movd xmm1, b
      paddq xmm0, xmm1
      psrldq xmm1, 4
      pshufd xmm1, xmm0, 11100100b
      movd eax, xmm0
   }
}

int main(void)
{
int a, b;
scanf("%u %u", &a, &b);
printf("%u\n", add(a, b));
return 0;
}


做了个测试,似乎其机器支持SSE

无心人 发表于 2009-3-24 22:04:06

放开173#的积分限制

另外,宝宝能对173#和你的代码的执行时间做测试么?
顺便,我想知道为什么提交后崩溃

litaoye 发表于 2009-3-24 22:21:44

过两天我也写个c++的,看看能比c#快多少!好久没用过c了!

无心人 发表于 2009-3-24 22:34:50

:)

C#前景有点模糊啊

litaoye 发表于 2009-3-24 22:48:28

原帖由 无心人 于 2009-3-24 22:34 发表 http://bbs.emath.ac.cn/images/common/back.gif
:)

C#前景有点模糊啊

呵呵,我自己的前景比它还模糊!

正在看几位的代码,看有什么可以抄袭的!

无心人 发表于 2009-3-25 08:22:46

呵呵,

我的代码要预先熟悉x86指令
写这个SSE指令很困难
稍微一不小心就出错
这个宝宝和锅老大是专家

litaoye 发表于 2009-3-27 04:02:02

呵呵,盗用了宝宝的代码!确实很厉害!
不知道有没有搜索某1位以后第一个1的?比如32位的,搜索8位以后的?
目前我用的方法是同某个数&一下,比如8位就是和0x00FFFFFF &一下,然后还是调用这个。

inline int _log2(unsigned int r)
{
        __asm
        {
                bsr eax,r
        }
}
页: 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22
查看完整版本: 关于一个运算优化的问题