Re[5]: Как написать компилятор Бейсика для Dendy?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 29.10.24 12:33
Оценка:
Здравствуйте, Worminator X, Вы писали:

WX>Здравствуйте, netch80, Вы писали:


N>>Деление тупейшее сдвигом и вычитанием, хотя записать можно достаточно оптимально.


WX>Можно на каком-нибудь примере? Или хотя бы название алгоритма, чтобы загуглить.


Просто restoring division, хотя под этим именем чаще понимают аппаратную реализацию. Или schoolbook division. Фактически там примерно такое:

unsigned remainder = dividend;
unsigned quotient = 0;
unsigned temp_divisor = divisor << MAX_SHIFT;
for (step = 0; step < MAX_SHIFT; ++step) {
  quotient <<= 1;
  if (remainder >= temp_divisor) { remainder -= temp_divisor; ++quotient; }
  temp_divisor >>= 1;
}


Но это хорошая форма для процессора, где не нужно ужиматься в 8 бит. А то, что я имел в виду, что видел где-то очень компактный вариант именно для 6502, но уже не помню детали.
The God is real, unless declared integer.
Отредактировано 29.10.2024 19:26 netch80 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.