Там видно, что в обоих случаях прерывание происходит не сразу, а минимум через одну команду ( так как на самом деле в тесте следующей идёт не команда Nop, а команда Trap 0 с выводом строчки "NOP" в обработчике - то даже отставание выставления IRQ на десять команд не даст другого результата ).
...
Как правильно эмулировать команду MARK, что происходит с R5, R6 и R7, когда команда MARK находится не в стеке, а среди других команд в потоке выполнения.
Ответ даёт тест: MARK.SAV
Результат запуска на V-модели процессора 1801ВМ1 такой:
Код:.RU MARK MARK command test. R5/001044 SP/001000 PC/001036 001036: MARK 1 001040: 123 001042: 456 001044: R5/000456 SP/001044 PC/001044 Program completed. .
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
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Просто, если при эмуляции следовать некоторым описаниям команды MARK - новое значение SP должно получаться из старого значения SP, а на самом деле - старое значение SP выбрасывается, а новое значение SP получается из значения PC в момент выполнения команды MARK.
Когда команда MARK лежит в стеке - значения SP и PC в момент выполнения команды MARK совпадают, поэтому неправильная эмуляция MARK ( на основе неправильного описания ) даёт корректный результат. Но когда команда MARK не в стеке - неправильная эмуляция даёт неправильный результат.
Последний раз редактировалось Patron; 23.11.2015 в 14:32.
Последний раз редактировалось form; 23.11.2015 в 15:36.
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
...
Известно, что T-trap произойдёт через одну команду после команды RTT, даже если выполненная после RTT команда очистит T-бит.
Но что случится, если следующая команда - ещё одна RTT, которая снова установит бит T.
Ответ даёт тест: RTT.SAV
Результат выполнения на V-модели процессора 1801ВМ1 такой:
Код:.RU RTT RTT command test. RTT ; 020 -> PSW RTT ; 020 -> PSW RTT ; 020 -> PSW RTI ; 000 -> PSW >>> Trap to 014 <<< Program completed. .
При выполнении последовательности команд RTT, каждая из которых устанавливает бит T - процессор 1801ВМ1 полностью блокирует прерывания и выполняет первый T-trap только через одну команду после завершения последовательности.
Последний раз редактировалось Patron; 23.11.2015 в 21:08.
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)