f(short *samples, int *volumes, unsigned channels, unsigned length) { long channel, temp; asm volatile("sub %5, %4" : "+r"(samples), "+r"(volumes), "+r"(length), "=D"((long) channel), "=&r"(temp) : "rm"((long) channels) : "cc"); }