我有一个处理器的自定义指令,它有两个返回寄存器和两个操作数,如:
MINMAX rdMin, RdMax, rs1, rs2
返回rs1和rs2的最小值和最大值。我已经使用汇编程序验证了这条指令。它工作正常。现在我想使用内联汇编从GCC使用此指令。我尝试了以下代码,但它没有给出正确的rdMin和rdMax值。语法中是否有任何错误。
int main() {
unsigned int array[10] = { 45, 75,0,0,0,0,0,0,0};
int op1=16,op2=18,out,out1,out2;
//asm for AVG rd, rs1, rs2
__asm__ volatile (
"avg %[my_out], %[my_op1], %[my_op2]\n"
: [my_out] "=&r" (out)
: [my_op1] "r" (op1),[my_op2] "r" (op2)
);
//asm for MinMax rdMin, rdMax, rs1, rs2
__asm__ volatile (
"minmax %[my_out1], %[my_out2], %[my_op1], %[my_op2]\n"
: [my_out1] "=r" (out1), [my_out2] "=r" (out2)
: [my_op1] "r" (op1), [my_op2] "r" (op2)
);
array[3] = out;
array[4] = out1;
array[5] = out2;
return 0;
}
感谢。