[an error occurred while processing this directive]
Вот еще вариант (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 10 декабря 2003 г. 14:10
В ответ на: интересны варианты 32 на 32 и 16 на 16 проц 6201 отправлено Valery2 10 декабря 2003 г. 13:45

делит до 32/32.

Циклы считать так:

shift_count = exponent(divisor)-exponent(divident);
exponent - позиция самого старшего значащего бита.

cycles = shift_count<7 ? 17:10+shift_count;


LMBD 1, A4, B1 ; mag_num = lmbd(1, num), num32 = (magn_num == 0)
|| LMBD 1, B4, A1 ; mag_den = lmbd(1, den)
|| MVK 32, A0 ; const 32
|| ZERO A2 ; first_div = 1

CMPGTU B4, A4, A1 ; zero_quo = (den > num)
|| SUB A1, B1, B0 ; i = mag_den - mag_num
||[!B1] MVK 1, A2 ; if (num32) first_div = 1

SHL B4, B0, B4 ; den <<= i
|| [B1] ADD B0, 1, B0 ; if (!num32) i++
|| MV B0, A6 ; copy i

CMPGTU B4, A4, B2 ; gt = den > num
|| SUB A0, B0, A0 ; quotient_shift = 32 - i
|| SHL A2, A6, A2 ; first_div <<= i
|| B LOOP ;

[B1] ZERO B2 ; num32 && gt
|| [B2] MV B2, B1 ; !(num32 && !gt)
|| [B2] SHRU A2, 1, A2 ; first_div >>= 1
|| B LOOP ;

[B2] SHRU B4, 1, B4 ; if (num32 && gt) den >> 1
||[!B1] SUB A4, B4, A4 ; if (num32 && !gt) num -= den
|| B LOOP ;

[!B1] SHRU B4, 1, B4 ; if (num32 && !gt) den >> 1
|| [B2] SUB A4, B4, A4 ; if (num32 && gt) num -= den
|| CMPLT B0, 7, B2 ; check for negative loop counter
|| SUB B0, 7, B1 ; generate loop counter
|| B LOOP ;

[B2] ZERO B1 ; zero negative loop counter
|| [B0] SUBC A4, B4, A4 ; num = subc(num, den)
|| [B0] SUB B0, 1, B0 ; i--
|| B LOOP ;

LOOP:
[B0] SUBC A4, B4, A4 ; num = subc(num, den)
|| [B0] SUB B0, 1, B0 ; i--
|| [B1] SUB B1, 1, B1 ; i--
|| [B1] B LOOP ; for

[!A1] SHL A4, A0, A4 ; quotient = numerator << quotient_shift
|| [A1] ZERO A4 ; if (zero_quo) quotient = 0

[!A1] SHRU A4, A0, A4 ; quotient = numerator >> quotient_shift

[!A1] ADD A4, A2, A4



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru