下面是几个linux环境的内嵌汇编,小弟没有这方面经验,请高手帮我翻译成ADS,realview环境下的相应内嵌汇编.先谢过高手们<br /><br /># define mad_f_mul(x, y) <br /> ({ mad_fixed64hi_t __hi; <br /> mad_fixed64lo_t __lo; <br /> mad_fixed_t __result; <br /> asm ("smull %0, %1, %3, %4
" <br /> "movs %0, %0, lsr %5
" <br /> "adc %2, %0, %1, lsl %6" <br /> : "=&r" (__lo), "=&r" (__hi), "=r" (__result) <br /> : "%r" (x), "r" (y), <br /> "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) <br /> : "cc"); <br /> __result; <br /> })<br /><br /><br />#define MAD_F_MLX(hi, lo, x, y) <br /> asm ("smull %0, %1, %2, %3" <br /> : "=&r" (lo), "=&r" (hi) <br /> : "%r" (x), "r" (y))<br /><br />#define MAD_F_MLA(hi, lo, x, y) <br /> asm ("smlal %0, %1, %2, %3" <br /> : "+r" (lo), "+r" (hi) <br /> : "%r" (x), "r" (y))<br /><br />#define MAD_F_MLN(hi, lo) <br /> asm ("rsbs %0, %2, #0
" <br /> "rsc %1, %3, #0" <br /> : "=r" (lo), "=r" (hi) <br /> : "0" (lo), "1" (hi) <br /> : "cc")<br /><br />#define mad_f_scale64(hi, lo) <br /> ({ mad_fixed_t __result; <br /> asm ("movs %0, %1, lsr %3
" <br /> "adc %0, %0, %2, lsl %4" <br /> : "=&r" (__result) <br /> : "r" (lo), "r" (hi), <br /> "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) <br /> : "cc"); <br /> __result; <br /> }) |
|