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
}
}