小编PLN*_*bie的帖子

如何在X86中更新双数组中的所有元素?

我是X86的新手,我不得不使用另一个双数组的值更新双数组.下面的代码是我的函数,我想使用内联汇编来替换循环内的代码段.我在下面附上了错误消息.任何人都可以帮助我指出我的错误吗?我对错误消息感到困惑,不知道如何修改它.

static inline void update(double * x,double * y,double * z,double * vx,
        double * vy,double * vz,uint32_t size){
        for (uint32_t i=0;i<size;++i){
            x[i] = x[i] + vx[i];
            y[i] = y[i] + vy[i];
            z[i] = z[i] + vz[i];
        }
}
uint32_t counter = 0;
__asm__ __volatile__ (  
    "loop: \n\t" 
    "faddq (%4), (%1)\n\t"
    "faddq (%5), (%2)\n\t"
    "faddq (%6), (%3)\n\t"
    "addq $8, %1\n\t"
    "addq $8, %2\n\t"
    "addq $8, %3\n\t"
    "addq $8, %4\n\t"
    "addq $8, %5\n\t"
    "addq $8, %6\n\t"
    "incq %0\n\t"
    "cmp %0, %7\n\t" …
Run Code Online (Sandbox Code Playgroud)

c arrays x86 assembly inline-assembly

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

标签 统计

arrays ×1

assembly ×1

c ×1

inline-assembly ×1

x86 ×1