64-битное умножение / деление без 64-битных команд умножения или деления - PullRequest
1 голос
/ 15 апреля 2020

Я работаю над реализацией Forth, где я столкнулся с необходимостью арифметики с двумя ячейками c (реализация Forth 32-битная), включая умножение с двумя ячейками и деление / остаток. Однако в архитектуре, для которой я разрабатываю эту модель, ARM Cortex-M4, не хватает умножения 64x64 или инструкций деления / остатка 64/64 (только умножение 32x32 и деление 32/32 и 32x32 + 64 умножения / накопления инструкций).

Хотя мне было бы хорошо с умножением 32х64 (поскольку умножение 64х64 можно эмулировать с ним для случаев, которые не переполняются в любом случае), а для некоторых вещей было бы достаточно 64/32 деления / остатка, я хотел бы, по крайней мере, иметь полное деление / остаток 64/64 в дополнение к умножению 32x64, поэтому я могу выполнить полную реализацию арифметики с двумя ячейками c.

1 Ответ

1 голос
/ 15 апреля 2020

В качестве примера можно привести библиотеку bigmath.f - Двойное число Арифмети c Уила Бадена.

Определены слова D* и DU/MOD.

По поводу лицензии. Я думаю, что этот код находится в домене publi c. Он был опубликован в Forth Dimensions 1 в качестве эталонной реализации, и автор сказал там: «Для получения копии источника этой статьи отправьте электронное письмо с просьбой Stretching Forth # 19: Double Number Arithmeti c ».

Для слова DU/MOD Уил Баден также отметил: «Алгоритм основан на алгоритме Кнута во втором томе« Искусства компьютерного программирования », упрощенном для дивидендов с двумя ячейками и делителя с двумя ячейками».

1 Уил Баден (1998). Растяжка стандартная Forth # 19: Double Number Arithmeti c. Forth Dimensions XIX.6 март-апрель 1998 г., стр. 33-34

На странице 4 мы также можем прочитать:

Материал, содержащийся в этом периодическом издании (но не код), защищен авторским правом. отдельными авторами статей и Forth Interest Group, In c., [...] Однако любой код с уведомлением об авторских правах может использоваться только с разрешения правообладателя.

И, похоже, ни код, ни статья не имеют какого-либо уведомления об авторских правах.

...