vak: (Default)
[personal profile] vak
МЭСМ-6 уже проходит несколько тестов: работают команды uj, vtm, utm, mtj, vzm, v1m, j+m, vjm, vlm, utc, wtc.

Я добавил в фазу decode автоматическое приращение счётчика команд (PC), теперь некоторые команды выполняются за один такт (vtm, utm, mtj. j+m).

Описание микроархитектуры по мере разработки постепенно образуется на странице: https://github.com/besm6/mesm6/wiki/Microarchitecture

Date: 2019-03-28 00:24 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Мой ранее существовавший интеловский логин сдох и почему-то не поддается восстановлению. Придется для скачивания моделсима завести на другой адрес.

ACX уже почти готова, нужен только микрокод, вызывающий потом ARX; остальные 3 можно для начала просто содрать из эмулятора. Пусть выполняются в 1 такт; оптимизировать синтез будем потом.
Код для сложения/умножения с нормализацией уже есть, осталось только интегрировать.

Date: 2019-03-28 03:23 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Отлично; даже на такт быстрее, чем я имел в виду (делать countones или clz одной микрокомандой, а потом вызывать ADD_CARRY_AROUND).

Комбинационные сборка-разборка в любом случае будут синтезироваться совершенно безумно, так что рано или поздно придется делать state machine для скорости.

Date: 2019-03-28 03:12 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
В Паскаль-мониторе ANX используется для minel; в инструкции по Паскалю написано, что он возвращает -1 по пустому множеству; команды порождаются такие, что ANX 0 ожидается 0.
 00001    1  1 PROGRAM MAIN(OUTPUT);VAR A:SET OF 0..47; I:INTEGER;
 00007    2  2 BEGIN
16 24 00002 15 31 74007
 00010    3  2 I := MINEL(A);
01 010 0050 01 023 0011     01 005 0021 01 000 0051
 00024    4  0 END.

11(1) - это константа 6400...0, 21(1) - 6400...1.

Видимо, на ВЦ машина была хакнутая. Тады ой.