БЭСМ6 код-гольф сишное целое деление

37 views
Skip to first unread message

Leo B.

unread,
Jun 6, 2026, 4:08:38 AM (5 days ago) Jun 6
to БЭСМ-6
Как известно, тривиальное выполнение целого деления путем нормализации операндов, выполнении деления, и приведения результата к порядку целого приводит к floor(a/b). Вот, например, паскалевская реализация:

    , ntr ,   . включили нормализацию
    , avx ,   . нормализовали делитель
 15 , stx , 1 . сумматор - в пустое место выше стека, 
              . делимое - из стека на сумматор
    , avx , . нормализовали делимое
 15 , a/x , 2 . поделили (указатель стека декрементирован командой stx, поэтому 2)  
    , ntr , 3 . выключили нормализацию
  1 , a+x , 11b . прибавили 0 с целым порядком,
                . лежащий по известному смещению по регистру 1 
                . это выдвигает дробную часть из сумматора

Проблема в том, что современный Си требует деления с округлением в сторону нуля - чтобы конформная этому делению операция % была остатком (со знаком делителя), а не модулем (со знаком делимого). Задача реализовать сишное деление с минимальным количеством добавленных к приведенному коду команд.



Michael Yaroslavtsev

unread,
Jun 6, 2026, 4:40:06 AM (5 days ago) Jun 6
to be...@googlegroups.com
Навскидку, долго не думая,
 по выход
 зп (15)
 счмр 64
 по поп
 сч один
 сл (15)
 пб выход
поп сч (15)
выход ноп

--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/5eb38b47-af42-485d-8196-dc365643bfe3n%40googlegroups.com.


--
Thanks,
-- Michael

Leo Broukhis

unread,
Jun 6, 2026, 10:32:48 AM (5 days ago) Jun 6
to be...@googlegroups.com
Принято (+8 команд), но я имел в виду, что можно не только приписывать к хвосту, но и переписывать всю последовательность команд.

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzufr11FW_wzXz4_nghFcMQ3EAcjh5GDtua1kxcw8xh7DJA%40mail.gmail.com.

Mikhail Popov

unread,
Jun 7, 2026, 7:05:54 PM (4 days ago) Jun 7
to be...@googlegroups.com
Математически поправка необходима только в следующих случаях:
a и b имеют противоположные знаки
и
a не делится на b без остатка

долго пытался про эксплуатировать не нулевой Y, но остановился на решении в лоб,  ну сэкономил пару команд

 DIVC              MADLEN-3.5   07/06/26   16.01.32    CTP    1
 001L                     DIVC    :  , NAME,
 0000 0124 40000                    1, BASE,*
  -   15044 0002                   13, MTJ ,2
 0001 00037 0000                     , NTR ,
  -   00014 0000                     , AVX ,
 0002 17001 0001                   15, STX ,1
 0003                                , BSS ,
 0003 00014 0000                     , AVX ,        .
  -   17016 0002                   15, A/X ,2
 0004 00037 0003                     , NTR ,3
  -   01004 0012                     , A+X ,INT0
                         C CORRECTION
 0005 0026 40011                     , UZA ,EXT
  -   17000 0000                   15, ATX ,
 0006 00031 0100                     , YTA ,64
  -   0027 40010                     , U1A ,EXT0
 0007 01010 0013                     , XTA ,INT1
 0010                     EXT0    :  , BSS ,
 0010 17004 0000                   15, A+X ,
 0011                     EXT     :  , BSS ,
 0011 1530 00000                   13, UJ  ,
 0012  6400 0000          INT0    :  , INT ,0
  -    0000 0000
 0013  6400 0000          INT1    :  , INT ,1
  -    0000 0001
              14                     , END ,

.  

On Sat, Jun 6, 2026 at 1:40 AM Michael Yaroslavtsev <absolutel...@gmail.com> wrote:
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzufr11FW_wzXz4_nghFcMQ3EAcjh5GDtua1kxcw8xh7DJA%40mail.gmail.com.

Leo B.

unread,
Jun 8, 2026, 12:39:40 AM (3 days ago) Jun 8
to БЭСМ-6
Мой вариант:

*  выполняем а div б = р
* комментарии: - стек / сумматор,
* н - неравенство знаков, А, Б - операнды после коррекции знаков, Р - результат до коррекции
 ржа  
 зп (15) - а б / б
 нтж -2(15) а б / н
 счм -1(15) а б н / б
 знак -3(15) а б н / Б
 счм -3(15) а б н Б / а
 знак -3(15) а б н Б / А
 дел (15) а б н / Р
 ржа 3
 сл int0
 знак (15) а б / р
 слиа -2(15)

Трюк в том, что кросс-коррекция знаков для приведения операндов к одному знаку дешевле, но даёт правильный результат. 

Mikhail Popov

unread,
Jun 8, 2026, 9:28:04 AM (3 days ago) Jun 8
to be...@googlegroups.com
Лео,
Супер, и сделано без переходов! 

Надо было решать деление, а не коррекцию результата. Да, было подозрение, что AVX можно использовать для коррекции, но  способа не нашел.

М.П. 

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/bd5dbcf8-9d14-4d36-90e1-c15e8d4e412dn%40googlegroups.com.

Mikhail Popov

unread,
Jun 8, 2026, 11:46:47 PM (2 days ago) Jun 8
to be...@googlegroups.com
Хотелось бы посмотреть на полный пример, приведенный сниппет у меня генерирует деление на 0.

On Sun, Jun 7, 2026 at 9:39 PM Leo B. <leo...@gmail.com> wrote:
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/bd5dbcf8-9d14-4d36-90e1-c15e8d4e412dn%40googlegroups.com.

Leo Broukhis

unread,
Jun 9, 2026, 12:59:35 AM (2 days ago) Jun 9
to БЭСМ-6
Очевидный NTR 0 перед началом предполагается.

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y52xMuRSjRARSLStqm-Tmv77Akr_4uvs49GrrD8Ed_J2w%40mail.gmail.com.

Василий Долматов

unread,
Jun 9, 2026, 10:15:44 AM (2 days ago) Jun 9
to be...@googlegroups.com


9 июня 2026 г., в 07:59, Leo Broukhis <leo...@gmail.com> написал(а):

Очевидный NTR 0 перед началом предполагается.
так он там не только предполагается, но и написан :)

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAFmvRsfoqQzDT68_Xk9tUDOLv5UZwDffZSckAaDBsi53wihO1w%40mail.gmail.com.

Reply all
Reply to author
Forward
0 new messages