есть какой-то способ - "обнулить всю память за одну команду". Может кто знает ? (помню, что работает не на всех реализациях PDP-11)
есть какой-то способ - "обнулить всю память за одну команду". Может кто знает ? (помню, что работает не на всех реализациях PDP-11)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
За одну не получится. Но если подготовить регистры, то можно
Не совсем за одну.
Есть способ обнулить память и чисто остановиться (речь разумеется идет о ситуации когда управление памятью выключено). Выглядит это так:Результатом будет непрерывное выполнение команды CALL -(PC) по адресу 0, что вызовет последовательную запись нулей вниз, начиная с адреса 157776. Конечным итгогом будет запись 0 - команды HALT - по адресу 0 и выполнение ее.Код:MOV #160000,SP MOV #4747,@#0 CLR PC
Стоит отметить, что способ не сработает на процессорах с защитой стека - там раньше произойдет прерывание по границе стека.
Есть еще вариант - команда MOV -(PC),-(PC) которая копирует сама себя вниз по памяти, но тут завершение не будет чистым![]()
Последний раз редактировалось form; 11.11.2019 в 10:30.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
hobot(11.11.2019)
да, наверное, это именно то. Не совсем в одну команду - сначала в стек заносится, наверное, конец памяти. Но потом (точно помню - одна команда).
Думаю в Вашем варианте - одна лишняя. А на каких именно машинах работало, а на каких - нет не помню. Даже пробовали типы процессоров таким "тестом" определять. Вроде - порядок выполнения (очередность действий "внутри" команды) у разных процессоров разная.
- - - Добавлено - - -
лишняя команда, наверное - HALT, в пульт можно и вручную переключить (и убедиться, что память обнулилась). Чем завершалось(каким событием) - не помню.
Машины были скорее всего : 100/25; 11/34; разные Воронежские на 1811(F-11); разные на J-11 и 1831; МС1201.01-02; самодельные на 1807ВМ1(T-11).
Можно и сейчас попробовать запускать на разных, но сначала интересно сократить "программку" именно до одной команды.
Последний раз редактировалось ra3qdp; 11.11.2019 в 16:56.
То, то! Просто в R6 заносишь 160000, по нулевому адресу пишешь 4747 и пускаешь машинку с нулевого адреса.
Работало на всех машинках без ДП. В частности, я это делал на Э-60 с процессором М2, на ДВК с 1801ВМ1 и ВМ2. А вот на ВМ3 - облом, вылетает куда-то по прерыванию (Trap to 4 ? - Не помню) с 000400 (376? 374? Тоже не помню...) в R6. То есть, очищена память 400-157776, а 0-376 - нет.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Ни одной лишней нету.
Разве что выставить регистры и содержимое ячейки 0 из пульта - тогда останется только сама одна команда
Вот на них как раз такой способ работать не будет - как только SP снизится ниже 400, возникнет прерывание по вектору 4.
...которой тут нету в принципе - она самогенерящаяся в конце![]()
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Так она сама собой организуется. Если смотреть на то, что предложил коллега form, лишние все команды, ибо действия на ДВК следующие
R6/xxxxxx 160000<Enter>
0/xxxxxx 4747<Enter>
0G
На УКНЦ действия примерно те же, только служебные кнопки другие. В частности, вместо G давят, вроде-бы, ИСП. Ну не помню я пультовой режим УКНЦ...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
с J-11 - понятно с М2 и 1201.01-02 - тоже.
на каких еще из перечисленных мной будет работать на каких нет ?
Вроде разбирались тогда и пришли к выводу, что порядок выполнения команд у разных процессоров - разный (что-то в процессе выполнения команды выполняется в разной очередности - сначала делается одно, потом другое - при одинаковом результате в итоге и в данном случае препятствует выполнению (обнулению памяти). Запустили бы на разных машинах (у кого какие есть) да и в разных эмуляторах при разных конфигах и сообщили бы о результате.
Последний раз редактировалось ra3qdp; 11.11.2019 в 17:27.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)