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-20 21:10 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Зачем? Большинство из этих команд декрементирует SP по завершении, поэтому хватит и дополнительного бита в той же микрокоманде, где сейчас только GO_FETCH_OR_DECODE (ну и бита в вычислении исполнительного адреса, который подменял бы 00000 адресной части на 77777, если номер регистра - 15.

Специальный интерес представляют только команды, инкрементирующие SP.
Edited Date: 2019-03-20 21:13 (UTC)

Date: 2019-03-21 06:24 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Логику распознавания стекового режима придется добавлять всё равно. Так зачем дублировать код, если можно сделать красиво?

Date: 2019-03-23 04:42 (UTC)
x86128: (Default)
From: [personal profile] x86128
Как-то давно смотрел документ Сисетма-команд-БЭСМ6.pdf там в таблицах на псевдокоде указан алгоритм исполнения команд.
Исходя из тех таблиц получаются, что только две команды которые обращаются к памяти дважды - STX, XTS которые потребуют отдельный микрокод.
Только три команды в случае "магазина" - ATX, XTS, ITS увеличивают SP после исполнения, все остальные "магазинные" его уменьшают перед исполнением.

Может всё таки не так страшно будет ввести дополнительные сигналы в микрокоманду?
В logisim есть запас, да и расширить эту часть тривально - добавив еще одну "микросхему" ПЗУ.