程序集参数错误

时间:2015-07-13 23:52:47

标签: 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" // 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
    );
}

它是段错误的。我认为我在clobber列表中有问题。有谁可以指出这个问题?

1 个答案:

答案 0 :(得分:0)

错误是代码中的其他地方,我对组装问题很着迷。遗憾...