小编clo*_*ead的帖子

为什么gcc/clang使用两个128位xmm寄存器来传递单个值?

所以我偶然发现了一些我想要理解的东西,因为它让我很头疼.我有以下代码:

#include <stdio.h>
#include <smmintrin.h>

typedef union {
    struct { float x, y, z, w; } v;
    __m128 m;
} vec;

vec __attribute__((noinline)) square(vec a)
{
    vec x = { .m = _mm_mul_ps(a.m, a.m) };
    return x;
}

int main(int argc, char *argv[])
{
    float f = 4.9;
    vec a = (vec){f, f, f, f};
    vec res = square(a); // ?
    printf("%f %f %f %f\n", res.v.x, res.v.y, res.v.z, res.v.w);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的脑海里,在调用squaremain应该把价值axmm0 …

c c++ assembly sse clang

11
推荐指数
1
解决办法
1182
查看次数

haskell中的通用实体列表

我说有一个实体列表[Entity].每个Entity都有不同的功能,例如一些可以绘制到屏幕,而其他可以发出声音.可以打印所有这些信息以获取调试信息.

鉴于此,我们可能有三个类型类:Show,Draw&Sound.一个实体可以是Show和Draw的实例,而另一个实体可以是Show和Sound.

我试图找到这样的类型Entity,给定这些约束,并且考虑到我想通过能力遍历列表,例如:找到可以显示的所有实体,或者可以播放声音的所有实体.

到目前为止,我还没能用haskell的类型系统来表达这一点,唯一的方法似乎是使用运行时检查,基本上实现了我自己的约束系统.

有任何想法吗?

haskell

1
推荐指数
1
解决办法
119
查看次数

从Rust中的方法返回一个字符串

编者注:此问题中的语法早于Rust 1.0,1.0更新语法会产生不同的错误,但Rust 1.0中的整体概念仍然相同.

我有一个带有name字段的struct T ,我想从name函数中返回该字符串.我不想复制整个字符串,只是指针:

struct T {
     name: ~str,
}

impl Node for T {
     fn name(&self) -> &str { self.name }
     // this doesn't work either (lifetime error)
     // fn name(&self) -> &str { let s: &str = self.name; s }
}

trait Node {
     fn name(&self) -> &str;
}
Run Code Online (Sandbox Code Playgroud)

为什么这是错的?&str从函数返回的最佳方法是什么?

rust

0
推荐指数
1
解决办法
1971
查看次数

标签 统计

assembly ×1

c ×1

c++ ×1

clang ×1

haskell ×1

rust ×1

sse ×1