[an error occurred while processing this directive]
|
|
В данном случае вот так, только переведя на асм. на 55ом проце это перекладывается примерно в один RPT #14 и SUBC
Word16 div_l( Word32 L_num, Word16 den ){Word16 var_out = (Word16)0;
Word32 L_den;
Word16 iteration;if ( den == (Word16) 0 ) {
printf("Division by 0 in div_l, Fatal error \n");
exit(0);
}if ( (L_num &60 (Word32) 0) || (den &60 (Word16) 0) ) {
printf("Division Error in div_l, Fatal error \n");
exit(0);
}L_den = L_deposit_h( den ) ;
if ( L_num &62= L_den ){
return MAX_16 ;
}
else {
L_num = L_shr(L_num, (Word16)1) ;
L_den = L_shr(L_den, (Word16)1);
for(iteration=(Word16)0; iteration< (Word16)15;iteration++) {
var_out = shl( var_out, (Word16)1);
L_num = L_shl( L_num, (Word16)1);
if (L_num &62= L_den) {
L_num = L_sub(L_num,L_den);
var_out = add(var_out, (Word16)1);
}
}return var_out;
}
}
Ответы
E-mail: info@telesys.ru