От EmuStudio и UKNCBTL?
Вид для печати
Узнать бы ещё - есть этот глюк в 1806ВМ2 или нет.
Решил проверить глюк с командами EIS с использованием регистра R7, если команда располагается в последней ячейке памяти. В этой ситуации по предвыборке должна прочитаться ячейка с адресом 0160000, соответственно чтения не будет. А вот будет ли в этом случае TRAP4?
Сама программа:
В итоге TRAP4 не произошло, но останов был по адресу 020000, а не 020002. В ячейки 017776 и 020000 занёс команду INC R0. В итоге значение регистра R0 увеличилось на два. При умножении 0160000 на 0177777 получается 020000, это значение заносится в R7. Но из-за того, что по предвыборке не удалось прочесть ячейку 0160000, значение R7 уменьшается на два и происходит переход на адрес 017776, вместо 020000.Код:157770 005000 CLR R0
157772 012703 MOV #-1,R3
157774 177777
157776 070703 MUL R3,R7
Из этого следует, что если в ячейке 0157776 будет команда типа MOV R0,R1, то при её исполнении по предвыборке будет попытка чтения ячейки с адресом 0160000. Попытка будет неудачная, тогда получается, что следующая некэшированная инструкция также будет читаться с адреса 0160000. Таким образом получается, что ячейка с адресом 0160000 будет читаться дважды.