Assembly 汇编参数错误

Assembly 汇编参数错误,assembly,arm,Assembly,Arm,我有以下ARM汇编代码来区分两个图像: void diff(unsigned char *a, unsigned char *b, unsigned char *c, int length) { asm volatile( "1: \n" "vld4.u8 {d0,d1,d2,d3}, [%0]! \n" // load "vld4.u8 {d4,d5,d6,d7}, [%1]! \n

我有以下ARM汇编代码来区分两个图像:

void diff(unsigned char *a, unsigned char *b, unsigned char *c, int length) {
    asm volatile(
        "1:                 \n"
        "vld4.u8 {d0,d1,d2,d3}, [%0]!       \n" // load
        "vld4.u8 {d4,d5,d6,d7}, [%1]!       \n" // load
        "vabd.u8 d0, d0, d4         \n"
        "vabd.u8 d1, d1, d5         \n"
        "vabd.u8 d2, d2, d6         \n"
        "vabd.u8 d3, d3, d7         \n"
        "vst4.u8 {d0,d1,d2,d3}, [%2]!       \n" // store back 0, 1, 2 and 3
        "subs %3, %3, #16           \n" // 16 processed per loop
        "bgt 1b                 \n" // Loop back if not done
        :"+r"(a),                   // %0
        "+r"(b),                    // %1
        "+r"(c),                    // %2
        "+r"(length)                    // %3      // output registers
        :                       // input registers
        : "memory", "cc", "q0", "q1", "q2", "q3"    // Clobber List
    );
}

这是错误。我想我在打击名单上有个问题。有人能指出这个问题吗?

错误在代码的其他地方,我被汇编问题困扰着。对不起……

有人能指出问题所在吗?调试器可以;)启动调试器,查看哪一行导致segfault。此外,还应相应地将vld4/vst4更改为vld1/vst1。在这种情况下,不需要交织/解交织。它们只是毫无目的地消耗额外的周期。