Assembly 汇编参数错误
我有以下ARM汇编代码来区分两个图像: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
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。在这种情况下,不需要交织/解交织。它们只是毫无目的地消耗额外的周期。